<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Interactive BOM for KiCAD</title>
  <style type="text/css">
:root {
  --pcb-edge-color: black;
  --pad-color: #878787;
  --pad-hole-color: #CCCCCC;
  --pad-color-highlight: #D04040;
  --pad-color-highlight-both: #D0D040;
  --pad-color-highlight-marked: #44a344;
  --pin1-outline-color: #ffb629;
  --pin1-outline-color-highlight: #ffb629;
  --pin1-outline-color-highlight-both: #fcbb39;
  --pin1-outline-color-highlight-marked: #fdbe41;
  --silkscreen-edge-color: #aa4;
  --silkscreen-polygon-color: #4aa;
  --silkscreen-text-color: #4aa;
  --fabrication-edge-color: #907651;
  --fabrication-polygon-color: #907651;
  --fabrication-text-color: #a27c24;
  --track-color: #def5f1;
  --track-color-highlight: #D04040;
  --zone-color: #def5f1;
  --zone-color-highlight: #d0404080;
}

html,
body {
  margin: 0px;
  height: 100%;
  font-family: Verdana, sans-serif;
}

.dark.topmostdiv {
  --pcb-edge-color: #eee;
  --pad-color: #808080;
  --pin1-outline-color: #ffa800;
  --pin1-outline-color-highlight: #ccff00;
  --track-color: #42524f;
  --zone-color: #42524f;
  background-color: #252c30;
  color: #eee;
}

button {
  background-color: #eee;
  border: 1px solid #888;
  color: black;
  height: 44px;
  width: 44px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  font-weight: bolder;
}

.dark button {
  /* This will be inverted */
  background-color: #c3b7b5;
}

button.depressed {
  background-color: #0a0;
  color: white;
}

.dark button.depressed {
  /* This will be inverted */
  background-color: #b3b;
}

button:focus {
  outline: 0;
}

button#tb-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}

button#lr-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
}

button#bom-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-grouped-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-ungrouped-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
}

button#bom-netlist-btn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
}

button#copy {
  background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
  background-position: 6px 6px;
  background-repeat: no-repeat;
  background-size: 26px 26px;
  border-radius: 6px;
  height: 40px;
  width: 40px;
  margin: 10px 5px;
}

button#copy:active {
  box-shadow: inset 0px 0px 5px #6c6c6c;
}

textarea.clipboard-temp {
  position: fixed;
  top: 0;
  left: 0;
  width: 2em;
  height: 2em;
  padding: 0;
  border: None;
  outline: None;
  box-shadow: None;
  background: transparent;
}

.left-most-button {
  border-right: 0;
  border-top-left-radius: 6px;
  border-bottom-left-radius: 6px;
}

.middle-button {
  border-right: 0;
}

.right-most-button {
  border-top-right-radius: 6px;
  border-bottom-right-radius: 6px;
}

.button-container {
  font-size: 0;
  margin: 10px 10px 10px 0px;
}

.dark .button-container {
  filter: invert(1);
}

.button-container button {
  background-size: 32px 32px;
  background-position: 5px 5px;
  background-repeat: no-repeat;
}

@media print {
  .hideonprint {
    display: none;
  }
}

canvas {
  cursor: crosshair;
}

canvas:active {
  cursor: grabbing;
}

.fileinfo {
  width: 100%;
  max-width: 1000px;
  border: none;
  padding: 5px;
}

.fileinfo .title {
  font-size: 20pt;
  font-weight: bold;
}

.fileinfo td {
  overflow: hidden;
  white-space: nowrap;
  max-width: 1px;
  width: 50%;
  text-overflow: ellipsis;
}

.bom {
  border-collapse: collapse;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 10pt;
  table-layout: fixed;
  width: 100%;
  margin-top: 1px;
  position: relative;
}

.bom th,
.bom td {
  border: 1px solid black;
  padding: 5px;
  word-wrap: break-word;
  text-align: center;
  position: relative;
}

.dark .bom th,
.dark .bom td {
  border: 1px solid #777;
}

.bom th {
  background-color: #CCCCCC;
  background-clip: padding-box;
}

.dark .bom th {
  background-color: #3b4749;
}

.bom tr.highlighted:nth-child(n) {
  background-color: #cfc;
}

.dark .bom tr.highlighted:nth-child(n) {
  background-color: #226022;
}

.bom tr:nth-child(even) {
  background-color: #f2f2f2;
}

.dark .bom tr:nth-child(even) {
  background-color: #313b40;
}

.bom tr.checked {
  color: #1cb53d;
}

.dark .bom tr.checked {
  color: #2cce54;
}

.bom tr {
  transition: background-color 0.2s;
}

.bom .numCol {
  width: 30px;
}

.bom .value {
  width: 15%;
}

.bom .quantity {
  width: 65px;
}

.bom th .sortmark {
  position: absolute;
  right: 1px;
  top: 1px;
  margin-top: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent #221 transparent;
  transform-origin: 50% 85%;
  transition: opacity 0.2s, transform 0.4s;
}

.dark .bom th .sortmark {
  filter: invert(1);
}

.bom th .sortmark.none {
  opacity: 0;
}

.bom th .sortmark.desc {
  transform: rotate(180deg);
}

.bom th:hover .sortmark.none {
  opacity: 0.5;
}

.bom .bom-checkbox {
  width: 30px;
  position: relative;
  user-select: none;
  -moz-user-select: none;
}

.bom .bom-checkbox:before {
  content: "";
  position: absolute;
  border-width: 15px;
  border-style: solid;
  border-color: #51829f transparent transparent transparent;
  visibility: hidden;
  top: -15px;
}

.bom .bom-checkbox:after {
  content: "Double click to set/unset all";
  position: absolute;
  color: white;
  top: -35px;
  left: -26px;
  background: #51829f;
  padding: 5px 15px;
  border-radius: 8px;
  white-space: nowrap;
  visibility: hidden;
}

.bom .bom-checkbox:hover:before,
.bom .bom-checkbox:hover:after {
  visibility: visible;
  transition: visibility 0.2s linear 1s;
}

.split {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  overflow-y: auto;
  overflow-x: hidden;
  background-color: inherit;
}

.split.split-horizontal,
.gutter.gutter-horizontal {
  height: 100%;
  float: left;
}

.gutter {
  background-color: #ddd;
  background-repeat: no-repeat;
  background-position: 50%;
  transition: background-color 0.3s;
}

.dark .gutter {
  background-color: #777;
}

.gutter.gutter-horizontal {
  background-image: url('');
  cursor: ew-resize;
  width: 5px;
}

.gutter.gutter-vertical {
  background-image: url('');
  cursor: ns-resize;
  height: 5px;
}

.searchbox {
  float: left;
  height: 40px;
  margin: 10px 5px;
  padding: 12px 32px;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 18px;
  box-sizing: border-box;
  border: 1px solid #888;
  border-radius: 6px;
  outline: none;
  background-color: #eee;
  transition: background-color 0.2s, border 0.2s;
  background-image: url('');
  background-position: 10px 10px;
  background-repeat: no-repeat;
}

.dark .searchbox {
  background-color: #111;
  color: #eee;
}

.searchbox::placeholder {
  color: #ccc;
}

.dark .searchbox::placeholder {
  color: #666;
}

.filter {
  width: calc(60% - 64px);
}

.reflookup {
  width: calc(40% - 10px);
}

input[type=text]:focus {
  background-color: white;
  border: 1px solid #333;
}

.dark input[type=text]:focus {
  background-color: #333;
  border: 1px solid #ccc;
}

mark.highlight {
  background-color: #5050ff;
  color: #fff;
  padding: 2px;
  border-radius: 6px;
}

.dark mark.highlight {
  background-color: #76a6da;
  color: #111;
}

.menubtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
  background-position: center;
  background-repeat: no-repeat;
}

.statsbtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
}

.iobtn {
  background-color: white;
  border: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
}

.visbtn {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
  padding: 15px;
}

#vismenu-content {
  left: 0px;
  font-family: Verdana, sans-serif;
}

.dark .statsbtn,
.dark .savebtn,
.dark .menubtn,
.dark .iobtn,
.dark .visbtn {
  filter: invert(1);
}

.flexbox {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}

.savebtn {
  background-color: #d6d6d6;
  width: auto;
  height: 30px;
  flex-grow: 1;
  margin: 5px;
  border-radius: 4px;
}

.savebtn:active {
  background-color: #0a0;
  color: white;
}

.dark .savebtn:active {
  /* This will be inverted */
  background-color: #b3b;
}

.stats {
  border-collapse: collapse;
  font-size: 12pt;
  table-layout: fixed;
  width: 100%;
  min-width: 450px;
}

.dark .stats td {
  border: 1px solid #bbb;
}

.stats td {
  border: 1px solid black;
  padding: 5px;
  word-wrap: break-word;
  text-align: center;
  position: relative;
}

#checkbox-stats div {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

#checkbox-stats .bar {
  background-color: rgba(28, 251, 0, 0.6);
}

.menu {
  position: relative;
  display: inline-block;
  margin: 10px 10px 10px 0px;
}

.menu-content {
  font-size: 12pt !important;
  text-align: left !important;
  font-weight: normal !important;
  display: none;
  position: absolute;
  background-color: white;
  right: 0;
  min-width: 300px;
  box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
  z-index: 100;
  padding: 8px;
}

.dark .menu-content {
  background-color: #111;
}

.menu:hover .menu-content {
  display: block;
}

.menu:hover .menubtn,
.menu:hover .iobtn,
.menu:hover .statsbtn {
  background-color: #eee;
}

.menu-label {
  display: inline-block;
  padding: 8px;
  border: 1px solid #ccc;
  border-top: 0;
  width: calc(100% - 18px);
}

.menu-label-top {
  border-top: 1px solid #ccc;
}

.menu-textbox {
  float: left;
  height: 24px;
  margin: 10px 5px;
  padding: 5px 5px;
  font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
  font-size: 14px;
  box-sizing: border-box;
  border: 1px solid #888;
  border-radius: 4px;
  outline: none;
  background-color: #eee;
  transition: background-color 0.2s, border 0.2s;
  width: calc(100% - 10px);
}

.menu-textbox.invalid,
.dark .menu-textbox.invalid {
  color: red;
}

.dark .menu-textbox {
  background-color: #222;
  color: #eee;
}

.radio-container {
  margin: 4px;
}

.topmostdiv {
  width: 100%;
  height: 100%;
  background-color: white;
  transition: background-color 0.3s;
}

#top {
  height: 78px;
  border-bottom: 2px solid black;
}

.dark #top {
  border-bottom: 2px solid #ccc;
}

#dbg {
  display: block;
}

::-webkit-scrollbar {
  width: 8px;
}

::-webkit-scrollbar-track {
  background: #aaa;
}

::-webkit-scrollbar-thumb {
  background: #666;
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: #555;
}

.slider {
  -webkit-appearance: none;
  width: 100%;
  margin: 3px 0;
  padding: 0;
  outline: none;
  opacity: 0.7;
  -webkit-transition: .2s;
  transition: opacity .2s;
  border-radius: 3px;
}

.slider:hover {
  opacity: 1;
}

.slider:focus {
  outline: none;
}

.slider::-webkit-slider-runnable-track {
  -webkit-appearance: none;
  width: 100%;
  height: 8px;
  background: #d3d3d3;
  border-radius: 3px;
  border: none;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
  margin-top: -4px;
}

.dark .slider::-webkit-slider-thumb {
  background: #3d3;
}

.slider::-moz-range-thumb {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
}

.slider::-moz-range-track {
  height: 8px;
  background: #d3d3d3;
  border-radius: 3px;
}

.dark .slider::-moz-range-thumb {
  background: #3d3;
}

.slider::-ms-track {
  width: 100%;
  height: 8px;
  border-width: 3px 0;
  background: transparent;
  border-color: transparent;
  color: transparent;
  transition: opacity .2s;
}

.slider::-ms-fill-lower {
  background: #d3d3d3;
  border: none;
  border-radius: 3px;
}

.slider::-ms-fill-upper {
  background: #d3d3d3;
  border: none;
  border-radius: 3px;
}

.slider::-ms-thumb {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #0a0;
  cursor: pointer;
  margin: 0;
}

.shameless-plug {
  font-size: 0.8em;
  text-align: center;
  display: block;
}

a {
  color: #0278a4;
}

.dark a {
  color: #00b9fd;
}

#frontcanvas,
#backcanvas {
  touch-action: none;
}

.placeholder {
  border: 1px dashed #9f9fda !important;
  background-color: #edf2f7 !important;
}

.dragging {
  z-index: 999;
}

.dark .dragging>table>tbody>tr {
  background-color: #252c30;
}

.dark .placeholder {
  filter: invert(1);
}

.column-spacer {
  top: 0;
  left: 0;
  width: calc(100% - 4px);
  position: absolute;
  cursor: pointer;
  user-select: none;
  height: 100%;
}

.column-width-handle {
  top: 0;
  right: 0;
  width: 4px;
  position: absolute;
  cursor: col-resize;
  user-select: none;
  height: 100%;
}

.column-width-handle:hover {
  background-color: #4f99bd;
}


  </style>
  <script type="text/javascript" >
///////////////////////////////////////////////
/*
  Split.js - v1.3.5
  MIT License
  https://github.com/nathancahill/Split.js
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});

///////////////////////////////////////////////

///////////////////////////////////////////////
// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
// This work is free. You can redistribute it and/or modify it
// under the terms of the WTFPL, Version 2
// For more information see LICENSE.txt or http://www.wtfpl.net/
//
// For more information, the home page:
// http://pieroxy.net/blog/pages/lz-string/testing.html
//
// LZ-based compression algorithm, version 1.4.4
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
///////////////////////////////////////////////

///////////////////////////////////////////////
/*!
 * PEP v0.4.3 | https://github.com/jquery/PEP
 * Copyright jQuery Foundation and other contributors | http://jquery.org/license
 */
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
for(var b=a;b.parentNode;)b=b.parentNode;
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
//
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
var b=x(a,this.findElements,this);
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
b=!1;else if("XY"===c)
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
vacuumTouches:function(a){var b=a.touches;
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
if(this.isPrimaryTouch(c)){
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});

///////////////////////////////////////////////

///////////////////////////////////////////////
var config = {"dark_mode": true, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "fields": ["Value", "Footprint"]}
///////////////////////////////////////////////

///////////////////////////////////////////////
var pcbdata = JSON.parse(LZString.decompressFromBase64("N4IgpgJg5mDOD6AjRB7AHiAXAAlAWwEsA7DHANgE4A6CgVgBpsRCiBPLbAFmrseYEM0pbACYAzAAYqEhkzyD2OAIy0pMgL59IMWBwDaoAC6sADmA4gATmADGhkH1iH+l+zj3i1jVdIC6Wogh9AHYvbBU1fyYAdwIIQwALDikldSiQCEt+WKIoXRxQWAIAGwBrWBtrMCIOUAAxfSNTcxwQWDAoPGr7R2dXfQoxaUYlJU4qWnTqoPcKYOHwlSpOSb5Y+KScFNpNXBBjMwt2zu6HJicXN2w9ChEFijI/AJnrwaoRRgpxgA509cTklQVLsjAkCDZSkQ4PlsNtHAA3KAmfgA1oAWSUMmWZCUFAknHooyk31o4m+ABlMY8JGJabTCZiqCSyRiscFOMEcRQGUomaSxBTMbQqOzObiGcT+d9WY8xGR5fKeXyyZSJLKFYqicqBTKqHKNUqxCIScElKrHoNvhJeKNeUaTUpdZbrQxbdrBWqaAKXRL3az5s6baN3ar5vqFUrmTrMfMyFLI1LQ1Q42TfVGPfNaLRTZwPlqKHQVTHsbj8UrrfjOUnw5rg0pvXRWd8JtmxnnGenVc2UwK04nMc3RVzfRQuyLC738xyuWPvrmTeX59nZ3jp0rxHSxCvK2QlRy2x7m3PjdmlfLS5wx8EJ98lcFW7mr9PxW6rc+xz3b6/+xJm1mc+2vKdgOJarpGO5miBnAHq6wb3gBY41rubrnquiEXsEe4AYeeoYeum5biBSGLiewRjtBS4js+o5QVyZb5mO/5tn2LKYtQIjYVRYo0dauGrphDFscsMEsQKqrUJ+oketQQ4voyPEyTeXEzkJx4Lm6+KkeJTJLgJdYNrQ2nXvGbrGi6IjaSIZLWgmRa8Wpp7fmSZxWGAABmHCpIwTSHK0NgEJYNjFOYvSXPoUEjDSeoiOkWQQAQACuMJSLcaxxKisJAiIIL7M0RwdF0RA9OcfRXHoEXhBIdycFMgThb+yyRbywS/GlGyAko2XefsYIQlCsDJUCshtIiyIZSAaJvLQKjfEoAkSLycwIW8nBkLNFBflV0giO+bxGrQYjQYSW0SMEKpvJ4mJiMddynedQy/mdKw3dtu13AWIgSKdx2LSIE7krcNCcJwAqbUBh0ngDdzfA8nLcpivJkCDVqjoDMNkHDP0TF9hZQ0DyNg7hO54x9X3zbyIgqPd0jfE9roLVlANDJdNJY3dYl7SIB1HQj0hnRzQyrethOdUzEwzXNWNKBjXKTeMQu4ptt38xSbzo5jmLKyyXxAt8O1zi97Oq+MSh65wBu80bAPjI9O30xTVMCzQtxk1jYiYtOYvq5Qbu0CjtCTcKuYyNehsq9bOkUCoYfa8K9bm3GMcc3Hh3fInlvh3Q0hiA8IjIQzlOJjrXwE27HtVjrc5R/bep+y6k3UjnZB52zmePPHac11bDzvJIV1SxZPcccEZ15gz0vcQDspc4dShY3nWk92IZ0PFjKyblPeor/niNR/Om/7bPWPfOt+Kb8Po9Y0tbbn33rOa69Yqbx36cnW32e5/nWvJ/joOGztT8s7e3hgza+j4gHcGjrzE+F4AbCitCod2WNKAHjgUyBaB05683XnSNBVcoEF2biaPBsMfa8wnjOLOJc/7kMHo3T+rdnJ8GsB5ZQOUDgtHOAVU4oV+izB+A8UYmFsAFneDIWqLwbjjGXnKesnx2LiLahlFIXU9gcPyicIqLkLh8NeAInEktKpSAxqsJg0wBjSOCLI66Rjkz3j+OlTYmVOrsN6pCaEHVhqwFGiiJxE0dZiAfB8NOQIMIR04BBegITpYanCfGEJkh/o6xWKmEJETdry0iSE2g1EI6JP5FEx4SNF7jEppREJlBiY6yqg2QpIoDJe39sEx4Vj/Zi0qWuCp/EyBi1oEpCpulel1JyZPFa8THjpMAYLcZepzJbimnUmJCpenUUWRhOWyx4lxw1D05JWz6n+w2Sk3sJJNnU2ObeU5Fzen9OFCMyhQwOmciicKYpxC3itJ9Kcz5jYxmpPGPc3EYsLlRPlkXIYDA5y12WhC1ZUL8niHabpUF7w6KXjVgRFFZTIbVM4lC7FJII55wvFitFeSgkooRfMzJz5KVBLif8s5HMwWMsBajGlYoUVvOXAEilUKnm7NKWilFPzDK4oPCKh06KhjfExVClqD4kWkRFQ0qacLxgCqGfywZfyTkAuopNGVTSomPJ1TKuVQxRViwVTmE1IopXtO6Xa2VG83jcswrKpkBEVncTtTasYWrLWqumak01i8Q0nIjarCFdrAkwomHCoYVKlULk9cStCbqnVprJR8qVsa5lewtdCm+atjWeuuaW8ydr3Vi1uA6P1waaC+s9f69FNs8XmtdUKklnqXW4N5QBP1DrklZKDW0vZobkw6pZZGplxtlijuLeA6RfKk0Fp1umss2bYHivnHazd0qm3Dk9cmt4dbWyxvpZWwsdqLkuRYZ5dheVWjHEKsVNopULEilZtgE+IpaAY3NhIr9oQbEw3eNeLmMUlFOJUU+3yXDNHvp0WVC69Jf2DgA+yVqZi6qzGZuh8DHFbikgce1LYWVXHgncQNTxCIkS+IsGiT63Yq6kgZPAr6N8WPJhkfSUY8CORPx49wYGzyBNMjoGJHjOdbiTiWDDA6FIeNczIPJwTI8cTkh49LUYuYOP/qg1uHT9YCkSbjGdQlPG1R9PoksVaa1rTaYajZsCEmjQ51JM55soxAniAM/WQ6VYdMGP0xJmketpMNVU/J8YXxjMNVk6mPTkmlPeeWCXcTYxUtRe7Hx66KX4vpbWtwdjhW8Sy0+hJfLBnFNReoK5uz8CpPSiq7XXT8MFMtec9QQJHWGQCLS21mLX4lgRZVG13TzEJOBc9m1xrBIZuzXrpTKQfs5hjFq911b0hTYni20p5jjJJCLa60N47dnBvScZCxzl4WBQTcZL5szSxZvBcZAtPWJIAvLcbJTXkwM1qOWy3V5TwYRsDZy2D3kU2wvZaK/90JfmCvw4q0CxHn39szdpHN+SoQIzufELjHbcw1S1mFKEbgZ8Md7e+xJq0C1HwY7jG5hTQmtOI9h+2Zr527TTWHPT7bwZAfqTZ5ps0iPRNrnp1xpnwYclVdghT/EaFEcK59BJhzKNtPC8y8hJYy8VCmh1wDoWwPhQeeJ8GPrAulgcTU7SE3QJQvc4gw74zwYFsGct15mnX2ldbyNxLvHZP9dB3lCje97lH3dXUS+7hWjeFlUpg9Da2GRhLAxsB9wKfkyUygxn15wQyPKMo7H59iG33aM/Tn+s0g0/mwz6U7P1xc/N06uxxYzeYMdVUaCaj/VBrR3OD48azHPQxmYn0mgacnrOfboC+gZA1CHVX/PsRqZl9AhHhZT6jxPqb6kBxHaUWF+0q39BUkDx18yAnEvtbQpDrOeFA8SiW+syzQOs/kUPz7/JhDmdN/mplWlvsvtmIAZ9EHJMruO/n7Igt/odPGO/o/peJAe8AwBflTNfmgQfr2FvsfsjN/rgbeFvnNBAViFzH/jSCDCDEQXMMONPhtBjDtOPvvjUreNPtQWvnvhvr2NPmATvqwbwRwb1p9CHEQewfQNPkaF9MuGgYgamNPpfn9D0mgcDDuFIdQNNDIE/moSfD6PwQASIEIcQVIc2L+LiM3OvqYX7MmAdDnI6DwTYc2HKJyCPBIYoS4TLO4fISCrYatH9CoN/uoWuLYR/vAXof7GYXYbSFHOPsKDYfMNhs3KODgZIdmFlHQLNN/n7JuFIfMAEdXDkX2tdBkTIeIWgcATehkVZObOjliBjPWhkWQbvmyL/s0X9HATfqMGBB0VkRLhPqdFPvMC0evioLSjUfrPUWwYoWGGIXIZ6Ikf/uAa0WfpyhkaEAjGMUMfphsQnH9FHqwuEPBpwm0AnshjXq3rxP5tgDkhMGnBjMXs8PoGUj/t4ACg8SPCXrBmXmohXmcUhtXmFDnqdFvNyLcS0g5l8c8bXlIPeOCQBiKFCU8TEI4r3icRolXkni8XXjtHPLcfAgqNCbhpIpTO3PiVmEyESSiSAP8D8S4uXghgCViSVMCVcfMJ9t4PMA8Y8S3h4NLDPh8LcdydSd8eiYyaca+jwqyboh4LxLaO8cmKKTCa3iDjDIqRqMSbSWiRRgyX8UyVKYnjKcnriUdBCUqfKFqeYrXo8H7ASOaZqTSXSeKfqZKecUCbKbnniVydIMqSSTiS0jkj6aHlqc6bqX3rlAae6dibXszGaRkaoJaTSdaaqY8DDMIgmWTqGTqc4hGXHpXtKR+myfyXGRSfMHnEmXyWSUyDtD6RWbyT3uGRifHoCTGaqaWd4C0lmcmXhqmf/jYoifjg2aieRrmc2QWUaUWZ6Q1HGAOcKFVJWSqfyRbhyN4PORWdmaOXBhKZiYWShjiR2eaVSMOeAL2fyfvlYp2UCN2WKU2TuS2SyVOSaYeZSXrIuf6TaTTGuTWe+dqVub8T5G6a2caS8aCUguaRVieSmfyXCX0leZBZuaXnqYBbuZOfuSCd2JQdgGpjpFYuIFWbxM3LIDhXOHhWILeWOfeRORccWZ9AUfeFeTkr+dBTtvCYxciRRdua6ahTRdOXMbuOaTyVaWeaxXBYJX6X+UhXmf8Yabxcnp6F8AJbYUFlBSJXNNIEGbcS4dOIhfSdJVGcBU+Qee8PGbaZ8T2aSQKTkrIIiX7L+WGZRdxQ+XuZcXKRaM8lpdecxWpRybWZ5cebpS6Shc5Wha5TwRtAieYRuRZTiRyaMN4FFfZTmVxcFdRR6fJX+EjN+QFTFbXkHHKNlTeY2Y5alcyS5bRQpUKbYbPqpZZRybeJ5TVYFXeU5WlW2XKRyWdD6c3N5ZZRaMaN1dFZxQBZGUBY+ehVcc2CDAiQkUNUuaJTNe8HNSOVJeOWVaFbRaaRSfvhJSxQKYblefWc1SVaNTxelaBQUVmIxeZVWYyGxeaXZSeQ5SladSFXJcZd6QSdjL1TifAn5ZSYmU9clSNfmete9RhbthScrj9bCf+otUOcdS9aDbJedSCSMT+pmTDaqbBQiZmEVStXpWtSje1V6aZUiVjeeXntteTUDf+cha9W1SBRDfiHORabVTiTjd+Y6cNfTcjdGUzVcTJPFbcdIvjaeZZaUuqSLbMklXTfpWNeVZ6Vtd+S1BTdWTICrTdcVUjTJfzUZbXgDgtN4JalrR+aqXcH0giSbbLatVRWDaje2SZVDd+mrUsBFSrWLc9SDbrYZRNR1T/gidSMteLRzXDVeQubTbba1fbSTQpUpc2FZG4blaqRyfabYYnZHYTXbcTQLXKUeF8IqW+ezXlV5YXcHV7bzT7eNWFQpQOX+DpcnfyZ1QlQmknTzfLWdbHSMVLZMa7ZzcKUtTbVndHTnfrZNcsA1ZSabH3WHV9dPZnUFQzTHbnXRf+gOdSLtWpf3YiSGU6cDZXQZdXRVdVjZdIhxfNdlnKKfXqOfQTYvXzb7TXRyRjQGLfSHZ+QWBma/UPffVXYrfJRaIEi3atG3RfRyYnJ5SAwvS1aVaPX7avbkVeYdDPfdYicg9AydQ/UfUrS+UHMHXtRTgdN+bmD/TA0vXA2FcrV9UwcXX2biGnS/qbZJcPbA3rfA1Q4iT1bQ5TQBmnUUuXfvR3W9Q7SWU7VeWMK7fvhtOI2/RXUI4zWPaI59RkSQ9w9WbTGnQUQI3LUTWwzXexFHIqUxWo9lqEAifqqQ5g3/RtUrcYlZMbUDK7Umi1A44pRgzrYff/RdcsAVQ6fg1vbPZw9o1Haw4/ZtS+S0kw3tUUjnFeare497Z4zY/JZmEpbKFEwE6g+k5Yx4wrck947Kgw44yY9vS/rI4I7o2Ezg2I+aRHcJX1UtdTXU3vTo9nXoxVS4ZTN+eg/U6HagyuTk4k3k+DVcRaBA7YabKA2bU3dnDZT5rTAkwfcMyIwg4YoiQ5iU4ExMhJXI5U9gyk+gkpYwyg2JZSTQ4jUM53SvdFquV9ao707Df08sMEyw+Q+07YxpUpSbG/XtUMCXIqRI4s/I8vYo6TdTYDQ832aoHw99UC3s142je8IMPBT85k6cxaOU60yPe8xleOGnXFmLQQ2Il8zQJ7RU201Uwc/iJozTZC5TXQEpUkZiyE285S948PmUai5ZdvWGMy681gwi+yb6VVbGJvQ05aN1Ts+S9i2yyCf1XXUqVM+/SnXzBmd2N4S0yywK/k4i0plefc43Qtfqy87/UkyM3KdQNwIqQa7dQChSfLCa2Q9q+a6vZTF/UCFy306cyMXy6a8syTRw+Hq7RTj3UG3CxS/sx9fGby5I3yD6T05q/y9Yy66CbOYdf49y1s4PeGzK5G4izSDZUkRk+K+M0W4M0s1c6C4GzfcG3YotQm+3fCzq4LRMDiIqQKK7fLLE9LR2zm6E3my22sxqhmziT8AOcO+W8CxQ5tVIFa7cX88W8ZdNK40w7sxG4K/7avleUXXS0a4JY61Y2ays6CfWJPWGIu48963qKu9K/2xuzxnOPi1SbWyoCS0JYm365W/A7XZPVNfbru+pWqFVX+0q2u7m/e9W/PQB3clVXHDe1i3e82xawsHceyLWxIIqWh326ywO3ne8MLZSRswB6U9iJO02y6xw+jbG5yGe15dh868e92AWIqec4awbkbdLax42+u0h9ZgxV9Vw8R4E68ge7k1+zXYOKtCx56yXVzE+24xcxW8I13TTCK/cSc7jep/R8m8eyMS3APTaxfTy882RzxxR9sE+zlbdTKlJ9LVZ9rZc8p9cyMR5TUWK165p0dR+06zpwG0fn7IqbvdZ0iVVTbFKwhzh/e5VRSZJ0q3tZ1ZFUiaB7e5F7xxw7KDJ32dBBmRl6Z+B2lxE6RyYxMrKvq+F1q75yvel76bGwAuHeV0m0ewGy+WGIS2pWmcvPG2SxFwx7Hd2L+N+UFxfRbqlF9UN3fT5011V7gzLSY68kU5IHl4hymz5q53cm15m08xC954e/61V1IJ19Lc08F2poF6J45wo+w4V++7dUUuyNuw15+051W4V4t8V3qLwOaW94p1Ozi942dDl3R0J1k0Dzt2J891dzU4iVB2x9POvbrEt6lxR4V8YwB7aVhbZb65N3t6C6CdwGk7C8D+i4T2DxdyC9+y4cx19V57dSRzTw50p5d5QylL2PO8+yYw9M3A4zdwz797K6MzQBxC3X7HFz5XzAqyL9p1N7j+5S3YCwBxyQq/L6T4z+T5Q4V4Z9M9WQEca4j71855Jt+Tz1r3dac4SXr5Vy91DxaBtwGcmIHaSxb9L9+xi8B9e6L3VRpb++71Lzj5D8o9k+98DEg/BxV87+r1Dz69R6VwPcr9x/l8j9bz+e9xZtu+d6r9O9UwH8U2j9+oDwpyr3z7h2C/Gxe32WnGp72z9+R7p6EoW0V0T5p0R4XzX7HRaFdZ5XnB77FdIM9J3xq/H8tys5R9tNR6zxkcd7z63wbzoT6QjbD0DO6/P4P0j7XxX9+QhWxyR5vyv/r7j75Yy8n7n3MDSzuy32Z7XztIf+N8qzBYE+A07370/TPirZl3f081h9Xxfyp9aAOZmG/3uwTJY9du4nCqgGFg5H8t+wnSAbv0t7+94yZTWNjEg37ADweTPcJlDwpwACBSVUV/o/1AF8VUUanSfib2M4kDmGT3dAdOX6pu9Qg3fWvJ1W950DfeBA58pgLzy1sSMXNdPkXyi7t8W6kgegSqw1qeVBBLAiHhH2z5ccL6LSG4oiWkETcQBEgsAXYkB4w9aeWbdQVP2/7XMeAp3OzmX35I2xDudxLQYoLQFq8VBYBJBrb0vYO9vu5/BPsewtCrwB6Cg2/m62kBlg3BofRrk/w6aONMOhgwuBpSfbxMv+TglTikUOruc7BMQ/AcoKz7Rts2ufWaGWRSGOCh+KnHOID2X5Gcs2eQ8wWT0z4HNxAanezqQPv6g9YB4fDAco27rUc5gPpMwRQOx6sD2W+gsorYOxpVCHBNQ/wdOS8LdNuh7/M3rNwiFZDrm/VFui1CEEzMBunlWYeIKoHyVLWXTaWs31tYTBQ4Gwx7m0MSEANBeczPPHMM8GnRjhzcZLj1zgGSDkhmwmQUyG+wGc9hSglYVG2do78Hhp7Dft1zD4DC2ByjC3MEKWCmgjm17BIW8IhrMQvqqPKAVt1QHFC/usZSPgmljZ4h3WsI/oe0JBK9YO+dxbblsKRjX0CR2gyIQb0+6UlwhcIsYVSKxEHDQK1ADvIwCRg30yKBFRkVhRwpBYPMdIyEY7UBGopa2y+Z2vTyKEZ8kRAvQYG71UCnDAOa0YXqdGWGWCkhztbmsNxoCngBOLwiwSUPeHflMR6okkJPTuQIjxR/PJRggIyG3U7kbbanjwOn5VsYc4/GVCO1rzQwuebPM/ryOVGHCNobvG/vF12ze8b+YHSYbjwToGwvqVfakfW18GUCfRDI8cPa0FEmNSkNkaWqKNaGvCExjzDMn8xGFekBy+YiETmKFbDx4KwI7ehaDjH7C+RFo9IY9WP6mwfSjYzIavx/7pDPhJvFwT6S7FZidREozdraMHKViChNY7MbqORECi4+6ojkMaI9YljJxZYl+gj02aoMGhSopcXh1JAQCZxlQp5nuP7GIjzR82PEeMEKEeD4cffVDr8L8HYihWoQKqu3GwFViFxm4wcSXxhHAjmsEA1sd6K3GfjESVkWNkFnTaLiPx9kfjncWAmpiso19GCRMPbHXMfMCwgGqOK27jiBxJ4yqi3T1iyj6quE/9m2L37fsCi0sK8mqP3HE9KJR41Xv5ECjBRh+t0XCQP2YT8B4oSUDgHHCFK0S8ybiQfHRhHwMYx814Vurbn1STxRJsEDVIMlEnQEsEpjBpKJIPSQ59CuMZSSJEKyST2ImksbNhDRBySTIY2ayKODkmRIZsYSUSVSgMwEpDIoknopWBslkoWo9qB8E5NgQuS+kRkhIjBHJCeSAslkqat5O2gNg/JQU5LCDm9T+SUsVqTyUpBSw1oXJraSHF5JVD2S8IKWVKWJCslzJIciUy1uZMUltJDJEUsdhvBKnqYQpKMAyZayMlhpiEFU0bKUhgg1S50DIP5qRDNAuSQUvmQXg6DCkTB4p2Wdgk5hckCpIcDkjkANNFSQ5bJBk8KfJgegmSBpPUzqH1NbADTYI0MKKfXV9SjA7graAae6gZAHSlJR4TFPtPt7ExRJOxAapdM1TKThUl02KbiMHTPSHUZk2lJdJKJbhGpJ09acbj+m9SRppkgqV9LryTSyIVkilL1KWTyg/J7EJ6biV8k3TOIvUg9ANJ+ntTUUHk7sMinRkozdptuIYHDJ6TRSIZgUtqcDJMnzSxJckO4MmnJl3AMZ3UoyXcFJkrSjJv0fqeTPBjlSiZckZqB9LxnKo3QsUwcAZDvBnTHhVaMWR9NqkRSGZ9KIGXBAMiHEY8ZIxRn+kVGyAhIdAJQHyW1mchdZN2SmP+MHFGyIGowNMtNENnmFjZGeMygbNJFhi/a2SB2ZVB4C2ylyls3WbxH1nmzzRvsx2fcWdnTM8QjvE2U7MDm4d3ZVsgUiSDDm39g5iwG2UnNDFIStZ9s+OUfjNk+zGRHsrUFZHTkpdEgA+DxLqS8Sj4/EaIE9PBE2xjBd4KoOuW5LbDYxYE5aDcPxlzCDSEI5aMxmVh7lIx3wnqADALiHlyYKQLaMeZqAnnNyZU00NzEPLExaZe0BYMzD3L6R9y/m+4MLJvIWhoRPUXwN6dBHt4sgoUx86bHPLEjwp65i2a+dKH5Q4g90bcygM3I1TPy7pp8t+TfIBSoRCQp82VImChQchZZp8wYMTFvmtzwFLUeuKcjHkvhv5k88kKcnPAvykFzcwhgaEblIkUFnGSiDgqWFApTkicpeUBH9xkQSF68/zG3NOgbwqFd+Nue7FQQkLF59EfeR3PwVY5N5G2R8N8hnnIRl5I815J/K/APy8FrbceXcB/lTyg4A8vMEIqfhXIu5BWHhX3Itx3yAFFtA+WfFOT2gNcPc5hfvD0VmQbQPcuhbgj0WaKcFJ8LSMoryKEKFmxCuRWAuaiXh4F/8nBTItrlplNIdODBTfOnhREvFyCkJGZGlw9zpY/UhJKYtdCRLFcFkNJCoq0Xi9LFRSURSkosWO4Qk94bBfEvMgoLfFBCyJUDmNwhJSF7C5mWpm1zlK2F987RR3KKXcKLavCxJYGTyXSKV5ZoCpBktfmhKJkySvpc3KCUGLOlI8/fG+HExqK2w6sthDoK1lgpdZRoevIbN5CyERgyy60DHI3YgKO+9YW6BQENkTIRB+ylZS7MzluzFlIwCJDQDICGztFusm5Q8G2VIddljylKHcp9nHL3ltyl5RRwJayAqEOIKDFsLxCAqAUAobDH8uH4PQnhQKjvNBhN6wrwVEwSFUBnOVly+oFc5xFXOEk1zPozMPNKaA1ETYoonUgkGdBFBkoCVeoTFJSqlStEk0xqSld0gGKCxfULKxMDSp2S7hOVpKy1MKhZUQRnMMqXKfSvpQ0qGV9ASldxGpxRQpVxKm8OPh+AUo+VUWSWm5LVWtZ8Q2wiVFqucwApOIiqrlTqtWSUq5kymHVQZA+CUqMIqhHVeSulXMyDI8RZYBysWgmq7kRqj1aSpEUGhyCFOESOatyRoFZVFK9mYMjQJNJrolKgiAlk4x35KVQSS1RTkFUHTqVbIINdDAlUNEdkTq0lu+DQLJr81N4YIhyveierr2VaIVYWqxBxr81DKogkSvTWwIcCkspNdhCILtqGZ3qHAs2o9ZaR5CdK26CGrrXMrWici4cMapZA8EYImEadafipUkoF1lqgZfWljW9rPQxajdRvB4I8r811q9fNhAYCUrdIAxFpGmomDLSeCYa/NWGqPVZq+QCEPdXmprXCYt1RqitaSomWaqv1i6u1SWuFWzrkU4qgCLMuOLzLv2L+YRMSpWAEV6KjAWDaYl4kOjSJbqxDTDhwyXiDuGG3WNCtjrQbmRAKZDSxTx7CIWRWYfDQb1uYsi9YBFP8ORp+CIqUNkG5/jRuI3wb0N2FJjVRv35cakNnG25sStNi79+J2KuEEJLGg1yro6BRoq6AFDYh+pD8OTCkkJAKazcpoVkO9HECqbT2zsOyNpoUJqaAwyCmTbJmKTGb9N0YK1dS3ogKaPoYkGTXhXoJqbmwDm6UB7CDFkJ7NpmnVZ9m80ma7IHUozXptMxBaayesBuQps8CewnNRoFzXpo4iHJPNKmsrMvCs0eh5y09eGOlvc2qg449YOtK5t775bnc4xASApsegqQKC1oZAaFooWlbVMCqYrflkIgUEsMdOBTS7ky1iIo4moBTQgjQhCgytIyYremRvjDbfMRWvTXrkghYh/NOWtzb5riw6a0tS2uyExsi2LZ7NXS1UOeKtBeSxtrSvbfUj+jiYBtOiy8J5qBxxpit3Wk7TdscgKbWtJ25zedvmZaRPNsCw7Xpqq1ApPNX2MpMVrPgpbVteYXLZPN1BVY6tPmuyK8mXitJit7m1kC/jB1I7fNqOkLRDrh0RagdoW5HD1re3IRotJ2KsMNrUwjxJw0W2BXQHA1eRNZftYbXWnvBCl6wsYPkjJtfb6wNl7OjFTcOLJM7jQLOjZSbCw3QVOdAGbneEEOh4aMVYm2jJXPoxSamM4GCnapqmgYwb5vWfED0XoBvBatuIWuQ1nlA1I9dEKTXVPON3L5/MgMLDFruWCrQXNtui3Sgq0K5ggdgMHEIZHAzrYXUeu6RT1WIXVZ2Q7GQGPBGISq7l46u96GTADQ+6YYfuwGOvNxg+73dm2fXSDA2ngZAcTu1PD0Vd01dTd+uqOIbojm+76QGu1pADDUCmx0kZu1tq0kmgHcdd4oSvRzGb3QRW9FtF3RHJYwnx/dIoTWO3qRwWa0YMgT2BHM+x160YB0euFHDEQnxbwzuqvfPpOy67l9HMO0AWFu2e6gi8+nPc8k92B7UYAOL4IdrD3Zh3kvIBXB7vejmx+01+tPQSDeDT194++s/bwD2hwwz4++x3YfvZXYoAYW+wYKeCmi4hAEdoFvdyDb2qwKYv4fvTAaAMj79MYB+gmaHn1k4i9ABktGstr1lgv9HSavU2lOjfYX9acN/SlDoGkG79faJA1PvwMHTL9PKNZSbpt0B700SB3zKPukV764Di+gfXbulDz7aYWYVchvtVgW0n9AhnvezPrCj7zdrSOnahtcpl6/oIMAStUnIpLkI5G0QJFlRETGDeNftVQ/Fg0N3I+SOhoBfoazjIaM5mKmjEPlxXK70QpseqaeCUKdTKQLaPNEoUniuGvUeRafFKCcz+G1J7GfgmElCPGpp8960I5imnyNr/DyUxgsKv8PjTGC/YE9LlIyNFgsjd+WwqWrSPIoCjmRsdAYRojeG3JnBXJHEcCOMjBktRukJoV7htIkjPh3rN6iSOSzpCTSLw24cwgeGlNeRgpIMdbAYgoUWMnI45vxTCopjHmqFGymaOFGFjqyEo7kZnQiF68mRldIOmnx2qvD3aXouxBdWmwg48YNY9MZNG+oLjgoVBcUYqOvInU1Rvw98m6P1HPt3ydo7So3inHXJtqII52t+MzSYjZKX4+keoCJG7jyqFI++F+OLG5jXhs44oS9m5GLcFKGE0/F+PWSEj9KX4ypJBOwI8TIkAE6giJOURpCnR05PifePEIsT2RhrDUb0XomHjbUm4+MZaRvGSV0x9uHmrmPsnWTKJ7k6ybc2ZHZQzJrY7kZ2oko9j3SLwzyYNDT4TJtAJQ7Hnl2OGldjGFw/ZO5R/5cQn27U+SYDC3Txjze3Yw1kMhzQoqEqTgsqaoxYqFdOKjU2PjGBrYdTpBc9GRBdOttDTpLACBiFPl0Cp85pykDnGebWnzTIAO0w4cEkjQ8VTGTqBTDdMpAPTlISmKih9Poi2wGIKyAujNMaVUzKicMxpUjOqny5DpiTbGecNMAMQCRpM0CBTMqAITOpjIpmdzAYgcQXgvMzIEpC2EzoRZmQCWYZ2uVTYWhYijDhI1nktQffDs/WCMPDnGQ05p0RzoXNLLcRc5gXT7tXO1xlzs7Lc4EnXOykRzLYZkeOY52bmNla5uXWWfVOSbNT1Z6BGWgDA/hH9zaeirLF5jWTaYXJj0JAbvwhJCjDMcaf+efN/HNstMVUHzKaNfmIIPEchVWi/NzqILMsm9F+fJVIWsZX5w9bzGSlfmz1SFoC2+f+0MxPzhFigFpoCNQWnzBmnGWBC/NKqH4ixuiz+EkPNp2+1FkFNBYAtKzB0CF2Uw/BUmoWTjZKkSNBZqNkrhU4FszXyjYuOaooWUy5DJY9CPIs0npqKDNNEt+G1LeaBCw0a0tuTBLrRtS5LMwu9HOdeapi+FpwtUXrNHKNtsBY20TA6kAFgFP0lUsyTlUGl6rRqhUsDraTOq9S2GE6P+XjLmYQEzqoItLqht4V5FF+cSM6r5LUSI07CfiuJXvzJ2+SalecuzI/zSVzEw6okvclcTDqkS0kVBM6rSZqV5NSdoquYWgrzU8pD60+35We0qdTS6LRyvpWskillU0OYF1bROof0Xxn+gOiN0GLI8NUPaWGvLwDzZUB+ANcGAaG1Ap0DnVtHAITXPgS14iWqZjPeI4z6IE9IEhvSdREZgBtNCfCaPHXsrSikmSsGlx/RoUN8h6KoGSz3W40N8mPYjsuuJIlF0MBM2FnutlJ+QKC9NcckJD3WeikMPWIPo6Rg23NxoGpQdOlhuZjQrklPSDbMwo2vJnsKG7NGxSw3sY7BYG76cnAo2Ik3up65IU6guFswj1j1vcnxtvWp5hKvtPjbJsoKk0h1srKTdJCyx8U51/jK9ZptM3obyN16TqChRfR00YNsW1PJtgLkXwKNxm+zeJtfhMbkt2m7jemyY26A2Ny1Ejfogo2kY+SWuQkQiS2ovrQtlBR/PPTS2Hrj8uLFdQttV6L5jtxW5bYmNby22VNgm+/KpWg3vbWNqsE/Jtve2jbcCr1ZMgZvu398ZthuW7edvwI/reYQW4oeYTR45lvV2UvKmlgF5pdagexD7JNiDB08edvmLYdLn86s754nO53nrCP6JzkiKFLiCj0NU67Cacuz122uK7bzY+OYLMlSkpLj5HMdylLbbn7hS9HJ/2z3KHuqxJ7G8xaByA5gjFytgiheyvvLKT575i0OgADHLK5Fu5I6jg33ckAD225bO95K11Ps9yzIOYXe+gRZtML4SXmPu6tnNs9zcwcadA8vfptj3TQQKHuFYinvVQ/7ZFjaPfYuvT3F7qsWMGnCXl37G9fduYKPcgfr2m0yDte0vaZCU6xFBywm33Zah42z7JICfTA5httyNwc+vLCHfMUkN/7rGMh+Ap3tgOCHV8jB6rAaymEcFM9gGIyJXsALt7YqRkVUTiWH3KEOknYikvPs8pxHb951fkh4fO58kKS5eKlIBh/g+ts8+BxzBkcNyUHOoURGtAYdaP2HWDz63o5MdIOpFkmNA6qDUCcOe5zICbV9Dr4RKDp1oSGJiBSDCOUl00NSbY8UejKgQy8PyykD4e0LaHPENQHJoEiMPBHaD8eWw4UcsO95iTgx7A/YUCOFHamah6I//taENHgi9mcE+keDSlkyjp+4PGqw5O3V+etJ0Y/Fh+PREyThRd3reQKPLHiC1p/vE8e+kbUPj02Nrh6cCZXHNToi146UeP3UpPV12SoZ8xzAFr1yn4GLrPJgOUw618IMDEeEzWBgcz68L4zGCCwk50FVZ6SHWcHPhI2zt0XqAgbwqQVF9BmTc4hUaMsNdhyuyaTWx99bnpGfIdZU+BPOoVV5+0zecrN3mJo94GmGAukXIL2QSXKx2SUN0wvVAjC8RYi9ykhK0pAiDQui+ylxY80hCy8OC5pAOKAzTi0yfOWNQ2KGthLil+Yq5i33CXF0/JepNxfQL2ZpSrqZi5GfwvTJAKNF9fY6wGTG4xLqF2lPDwkohlOocF7JHhgousBe0gJRSHBeSQbFBOvyXchhngLSdZMsV2QqbSHJOQ1zvJU3OynVjoFxrxV0UhMjmKrEuCA18ZGSzWvypaZJ1GfYSV+TAGwSkpTzNNeyPUUoUg1xtFZfty0IAbyWW3K3k3wDXMMLF4oq0x2v4pKL20ny5FcmvhIxSsZU/ANfERw3rSgydyRdcKu/JZE4pea6LeGuCcXrjaSPDTfNKsoBS6t0i43nKxypTLeV829tfcl8ZTLrzNW+jcjOolVbgMGG+vvVLRpQ7z1w0pDf5uY3LShCL267cZu43rbqxzIrLeNuaFKL4t7W+HmZuwweanN2BrTtHF6dMz4slaFCTXLqoGMCa4bNCeXvdsg1z5WKN4FIcxp9pMe9e6Rh8k3397haI+9E3Xmdr1cpjDSpxjm3TGa0KLA9GtDgevV14OVU9Ztco4i87sJnFFA9hHWQRdFDnGSq4ydZU1sqS1Umkgph4qVhHkVRPVsynYKc2HtlaiuRwGZNd3GOS2kLhxwfVcLHvTO2HPGQftVHxLjwZho7qqvBvCwT7x+VVIsFco2Aj8J86IvyIP5Hz6GmIPmQ4S9pKk2CrjKxjYJrwWPzTB4bljYckK2GrSp5im8e6CUnyHEJ5TUfdQ8qk6WMEQex04QcamGcHoSo+qe/YxCItbSBexxxuAuCHzwx/cwaNjQwREkKznY9yr8q/uRj1YmY8jc7PEmM6IqIGIJEdbd0kEeZ7SKmesvinrEBh6080fUv3+EOBdczzxe0P85fT9R+2HwfUCOq3OBrgNyhfLVcWZuM1/8+DBHcaBMDwZ4dsnwFi85Gm/xhc+yJUiBXzT9x6ZAOecvckHj4R6EI5wkvr2BaLfZ4LLeCceXnULOtJAXoYptH7/HvGlz2ZAklYdfPYT88+NoWwQaZxcv0Z2JIo4DdkY98qiZVLn1wXEOxGEQgQAMBFNZa3Yah/e+dtQwgWnEijvf5qoJcH57KVIffyooiIXpVGe9LkvvEGCH623h+fQAfGP4H1rwZgLDepQOLH4RR+9A+n3Hg6HwJV+8U+7DXdx0z3Zrl/oQUoiSGSgoDC+pREFyWuQtKX0SRZTuF+MAY4F+XVUwoiZNF+YYCI/fJkv1ZKz52Ts+p0yqVn2Ei/PJSVf/ERX2EY+Dy/YkdFzqXrp0lLhFfaB6A9rv+h0XOf/PncDz7algOOZzPoXxLMOSO+xfvPxXyz/d+S+lIYDtlIr/GmrPBkavyWcw5dWC+xf//SeOH97B93rkkvvXWGHpSy/OfrXC37GGRQv2yUsVzFC/Zl/2yJUuf433+hUmZ+O51NwdMfYLTM/Ikx9pP7z4T9zoUF9fvu37+r+0o+7NaP9J/ZQOxgBfCdYVPg4aRGyC/RbRVNn7yL4OHUX546YP7aTJ/hwHfkX45Y79B/RfMfyP7ze5LGoe4nf7kjn45Nz/R/tqAB1P978aEe4P0/3xn4670KN/reyJmP8zB66D/LoD30L6KSr+7fEyYBU/6XhJ+7/0BrKBV+6fsr5Smh8mf5rgQ8Fn5H+6ekAFp+FFhXpimfclv5VoPcHH4oBN6Dv6f+HpnPAAOQ/hz4L+D/rfbD+e6Bf7eoxfgP43+liuX7MQJ/mP5TUNfi/472rvjH4f+dis37f+zcgwHt+SATfBd+FKEvBV+/fiShQBZfnzAF+YAbooEB9/tlZA2+vvWh/+yAchah6nAQKB3eJEq5TgYVUMPgt+y8AtaGyHDjoGBaN7iD7/CAwLOzVwnwJmB6BcoBYYWBRgfpomBz7lGYCS3diC5j457tr5RICsjfIfOzaG5rcQtcs3p/mPgVPLBBBSCwFhBV0p0he+cJNpZ/gKCsSByoAsqOCeBZaCLIR6xIOkGgW7ikkF5Ef6Nr6JBOQVEhw20SsYhZoAQTODnun5pUGG6s0AgHXQ2esAqJmPaKEG1yL5seihBKCh0HigkQd0FtSw1qWr1B3fsEhMckCi0G0WzvnArVQ8SF74sWx6HMFK+qaAkFQ2QFikFE26lhkHLgUNjhbnS9CgdLaWDWJ2o7BxlojIdyULhoTgYIwUTbHS2esKpQ2jFl0FQ2HFk8HcWzEHcEjyDMrlJXBSflUqtBNFrorMyIlkcEsKQIeUh7Blin8GTBSwdsFfBf5usFQ2IwSUETARNhxa8+tcspaXBXvszAiW2Ic7gGgf6DgHK2tksiGFBwxv5gFB5AbCj+BDQcra3BR4L0aeoawQDLdKZRrwBaBy0i2inBAIe4qYhnSK9J8B/Rt4ELoI8tSGdBjfuSGNBTwTiHlIYMtdb4hEYD8GHuTAA+gZ2p7lnaJ22+gJRd+0sEcoQYESPoY6htPhXag+ZUCQpfeQ1jJBpweoRxAGhk1laHGhndoB5uBu1lWb+I1+niBHWNyo7CwG6BHtKhmMsKXq4GyLtsDnQwYWZihmPoUgYRIWLpGFFwp+q3Khmg8I/oOKSYbkjz6tmEdahmEMFfqDSssqGbmwiqBmEgwF1qGZ1wuMO/qJhEkJ4b76X0NLgBhoyOGE0KDYbLC26JYd3Khhm+k2jiu3oVKCTQzMtmDjynYRIZ+hAuHGHnQbLslhJhpaoDBqgb0tmGym8+hthuYBYS6pownIATjjhTsKVjm2W4dGjO4U4VoTeoe0DICHh9Hv2iCwdYedpaEvRitDmwGuAGE1hgsHQC7hMkMtIrQL4VFp6CO6ILD3hZimoBXol4TG4pAwqieFWuw4WLAHyG8hBFJ6O0NwogRb0Fg55KAEX6Zqwf0I5KFaQ0OdDywn4dtqMiRcGFwnyw4eoFvO5gej7S6BjHvg1Q2hkfg/eA2jYGOhfwveJ6ABQReZIsVEXbJMgGyudJ7OjEfyz0+FZq6GguBkjKhsQXNjwDQu7KntL3W/OAi4EYjCvdZ5aViL3AKR62tlKPISnuJgo2SkXraty91mfDKRnIA4r6RpLn5KiRssuDZUu5kUdavWdLgGiGR7uAVj3WwcOpK6R5ts5HsuZkXnhYuMkR1heRROBjZaEArjC5GRF1opHQuRduK7hRLIDC7s4CthJEYubqtJFqRirtIiRYqtoyKquMLkLpa2xxtdKRRothBj6u/ngQomRkknHBRwhUQZEJEtMFrYpRarleomQ2kdC4icPkQyYNREeBrhlRM4FK5B4i2JZFaQvUXpHfexUiIrBKzkW66EuDwATjRR2UoGrDRGWoK698/EPjZKRLSH1GrR0LhMpvSs0d8AkRpoSEBrKrOopEcg+gUuTEquAqXYRIHEaYHMRp6uCSXWx8mdHTM90RsqzsVUE4EsaaiAJFDQTpjXJSSqyFSB0yoMo5ZAx+UiKF3YnoC9I8hx0GmS9GGkgQoKU2kvhyIxnVAeCtSPUqCQgyCMhDFe2J7JZLm+ZmKCS2SOMZDLHQ5ZM5KDgeLsTGUxg0iZDExhMqDH4xmvqzLJYWMctKsxk4J6CX+0UlDHSyCVmDGySVMa3JbqpaulIrRQMfJY4x1koLGDRcoXjFMBdkqEGwxtIUDLsxDYBjH0x83HLFUyixC1JqxqOjzL1+gukbF0xbMUHT+uYwdLgT4lMjNJAxc0pzGbQ65JbG6xK2qbH0wZUra4pBx0PtqKob7qLLBWxUhCH8Y4VrKaoyEqNdphxZwW5iBxr/tDJvS/lvLK4xWCDqo8xysaDo8y6cfNocx8sSnEFaLMQKFhYBXgr6PS4rhQQoyIIS/IUEtMVjLDaLMlsHzQPksb6eSgMcXGxIvMfnHnejscdDOx1UmrFshSsa7GyB4gJrFsxNsBzHGxfmhPFmxXMSbCUy40p5okxSUmG42aE4PtFmB7gCnK8weIEc5nkW8f1amg8PnHJ+yR4AtCcROshj4IIR8dnInx6CLvGN2N8bj7uw18XzBWyQPs/E0Rkck/Ely1wgdGbxtpIXKgIZ8T7KPxlUItDAJzgaxpnuoCXNaHx+ctvhvx7MnAmQJ30c6EM+7gf9GmoiOtP5hxnStgkQBVYJSpIw+CY35EJ7Ian5A2MqniCpIG9s3HQwxDs8gIWJcQ9AVOqVmz7KRlMGpJsJlkpeE22TCe3EQo+IBEG0JkMMpGW0nKJhYFoykcQknIa/oq5YJsidEGcgIkVOjYJ8pssjSJUDnUiioKiTIkKWpCXgknIqgYq4HS1CUYnAxfkvQn02AyINHvQtIF8iKxBkoYmXIVxj1HOJLyAYn28kKGiZzuB0hE4eJjMttJ9OVJs5JLSLNlSYoyzMPKB7oESc3HTIMNiEkeSEKKSDvBFuFIkQon9HZY+JkbgokuJpCbkkeJfvmImZJc8FCYNSySXjaoKYcfEm0WFOEpJRJbyB4mHSykVVDhJIbH7FBJqaHUnFSfiVLZVJ10lC7eJMIVDLuJ8CgahEJWiRMbwxoyYcYGRYSVBYuWiYC0nGgCyfkll2KFjsY5JWUJ/aUo6SfhxcJMxkkmbICSbMkEuFSe8HtWlCRkloGdKHO4FJuymlL3J54vUmDSNyRMZRS5yfphTJ5kOvF3RFtPiTT+37v8mMALaCoDw+oQCZQgpukd+5H4k1rzooJ6oWVBJqAKdCnnRsKVCmD6Hdlqw/Rw+Bgkgea0rKjVqK+M+prSLUHkQQpv4IWprSSMBoQQp+ytdiSG8YHSkeYYONVCSEFKaRQc4a0oILMQlADPj/Q+eOgR34fKTDDG+gqf9hgQfKaBja44qZNJL4WhMvhW4A4cKm9YlOO9hfBg6HykcQXKmtLXReBIyKsp7dpviZRj2J0oaEfKfSmGpZKU0YWphqYSk3oWqfbiG6ueNan0gzKY9g4hy6ikAspR2M+Ecq3qR6kZYvqBakspOuJeHGpEGDqlromqaqnEwXpHKl8p0EIcivEViJqoBp12CbA6m7qTt7ZYz0Nmlg4YKPKlBOj2Cujn433jqmlIWUkWnLwcadljSwb+JaymwK2K9hwyRaRnTo4r2G6YGpOuAkRVpIaY9hBwpvkWmWpPaYNLKotqaOk0pa4I6mTwIQmtBREfKUaCDqmeGEZFpSaa/5zp0BEWkAYBSiEJqgK0fmmTpq6fmm/J9IrXjNSCKsyISyDdsZTzpJdmtD1IWKXeJnpqpBem52GMKig3pyInemN42FBTFPp99DilOGwkfQzYgssjOQAYjmjrCdQe0g1BNphus3aPCjChBnVKlIKWjIZsYJBmCgG6Gqn5wmGahmgZV9ObagklOGhnywgWCHFJEskTRDJIiqWVjQ+GmmRlgZR1qCQRUt9qBnQQDii5hsYFkIRkWYDcnBn7QxuKBkcQWLnBmDaaGUajIZ8zAfIYgWcJxkXWKGVBk/A0EDHHdgWGXJncSsGepkEZWcDBkC4qbFhloZ85Cynkx44KZrFwhuEXH5uK8kxlzgZca/SK4mmTTSaghmbpnqgIsfhlQZjcGzHmE+WGhntwLOlzF+ZSHgFkQYYmeYQ8ZYWe7DBKgmXZHRZ/GYtjRYSWiEZLwiWcdBTULOCDpLwTaTaDk+XHmFmiZ1sf1xOKYWXND0xOmVBnwIimDQpKZ2GRThfAWODOR/axmS5n5wmVFx5yZ1Yl9JuZUGQRLFgcYLpkuc9MUkTZZ5ZFZDqQJGdRloZ5ZLhlmZc4KUozZuELFkhZuCOAbLZGuNFj3g3Ti/ZzZtEFR5LZVkAHEdZE2n3blZvmf/ilZ62QNwgQg2d5kz4PWZVnYZcMdJmXZmJhf6qZ9EPlmnZLSI1l04DUKtAHZlhG1kZZkaTtmQk2Ci5j+ZwOdeCoxOkItnA59mTHFUZfkYjk1ZBWCRnZZ3WZDFeZe0Ue4ayiKeFBAIp0Gc6MgfSBzpZwfmAs6LAa2Icq3RL6Qj6cY+OO+7ykzGuLqU5V+Ps6s5AHkC5Aee1vebOOkgGzE8GmvqIhvkL4FtD0WguZTboei4drpsxJMnLmzIwueghJIuIi9DHqCjjkIGZAerEhc+Hpi9BooZEAY7d+huWEhNOCKIbkK+TTv6ga5vkmLmj2W0NGoKO4uSAiK5Nvj05C5XMYjAK+nuTLnOqyWtLlsxPqto7K53uWlZc+mMSOqjIbumJkRqi8DeGxZAefXB+5bMXCS+SqeeHnkqrIM3rB5WuTLnoGlrJjFrKM4bHnWxMOErleem2RTBSok0DJCW5QzjqgSQJRMdBH4qqCfTEZR+MOhl54mILnHhlrAbme5/eR9ywZXeUWHq5PTkqb55aeb5YlOXuXz4R56uWLlXovWEOli566APnK+MkDmg95u4E0475vGG5Lr5aucmAt5y+ctD15qAYKYmOViOBkpATeT/j1ok+e3k/kEuWPm32oiLcARxfeT8bOOtoDHEHcQVkfi3Sree8AOok+YvjP5hlrnlcx9+U1YwFC+QBb+c7fhCZFWwBRX4QmBaEM5yp++Tug8ABKIb6RWP+hCZS2x+UDY25CgagUX59SFfnfmp6XWL8WQDGAkigomV+6o+W0OIB+yFMCvC2B9OQwXOOgCc1CsF1EdMw9OghRBj/ugLtGYuhwHi4ZbqYke2C7mdkIFmwZPAIEFM6nmDQormOOoMDIZXQUDEyE1sfoWegl+MRlaE5oNiBcZbuppa2kChcdASQulrYXgZVoYqhAxq0FYXKBvGSYUbResp4YGFmkfnBqF1Wi/iaFGOUEUIZePI5G+g1yEDEww4rtoXWaLnHtIJFGYNviqFjfsWC/gbMfk4/g1YgnHW+sWtzGVRX2fXmB5U1D4UpFSYI+xY4KRU2BBO0RT+A+YYRRkVQ5PWTkV2QQ7noVKJPSMWDVF/2aUUp5DUHEWs4ShbJYNY6UQ0V2QBcskXvRyVuxBGYo2AdxFWohFi43YGebxBygwSh9jLSQkJsWbZDhU1YrFRhRYlCQx+JNnmFQkGQQGZxhW5q1RRcTcWSYZcRcVDFwME1nWF1WoODTRrmQcV+WnxZDkQmpli8WIx4RTxD508RXY6hSIEGnjTYH2GFbTFtuPnakm1xJZjA4EJYM4bFARfYVHoRFr1iOYeWQCU/J+OWqH3efVphnM5Vgafn3x9UOWRVQ1OR36zQ8PgNnZg6zqz7eyohcTG0lvjKyU/x2KWgmCRshdWaKB7weSSi5xyrSjRI1ucYl1Ip6FKVpIoEWKUSJtpOmFwBEQWwHvI++CJZFIi4RbEow2iaqjVZ8ForFoIQFlqVVIdyP0hqlPKHcjDI6YUibmJ8kmggcWKpYig2GiyNbmuJvQSKWVgDcAMHbIeubKXdJc+gGWN+8mfsgVo5pfsh++WcEBbax7yIGXsh8ZQHChlrKLaUDBGxmgiQomyeAgel3IPCjrosZaeCHJGaPAhyo9VjijUgeKGWWEoogbRanJB8HyiXJLpQqV2WWZXQhplIZbKUSSlCM2WlJ7luqVLowSN5ZVIkgQSDyoqqBWUSo8qMOgll+Qb7Ef5BZR6jPJ46DmVcoi4daXaoi8HaWXIXZaXpbll6MtB7lo8qmWQo/RhmWJo3RcaVZoJtEWEGlKFp2j9oI5c6jHhvAV8nXlH+T2UNo46LKWnlaAfEhRom8BlYnoV6C+XBIa6EkiPl26Bmg6lNkJBU/6hsReiSheCGWhJoV6DOVQW/5UAhFoNaEAjIVByK/5UIBvpUbvlVUjBX3ltIPQWliNwAkQQMVwftLfO4ctRWyAf6C1DPO8PngFMVvWHRVs5KzhyZMVVMaxVSFrgeglCRIkuS75h+ERtCpRsLi+BdasqJQAGSvLowpxhklX5KKVEYT5h9IJ8KpWSYsYRpUqVMLoG67hCdOcINRRLqWEJ0WYPnrUu+YdTYFsUMmJVZhU1FKL2RJmamF/gJ8CkjaVhlVFp5Yy+IDKcu72qflygPLtjBKVrGMFVLRZlfxjKVWleC6rQ4rjFXSgUroDGJVDUdK7FajZrFWvIJkM9pVQVeuC5MQYWM9rzOhCTq52aU1CsBeSS0dm4KamVRa4z4iYXpWxVlrlOH10v4I7jxuOVW1Uuo7rjpX1h7lXOA9uHrg+G+VQxL1XeV22hLL1go0j64+Vtyl8AGRw1TaChmE1sUi9VfbteGhIwEl1K/ZOVRJXNVoVRGH7V9VRRBY4kYQNZxu6oNgorVSMMUh5uOkKLLqazlQS6duj1cdX3Vy+F9K1VF1V1J7u11UeB5wIyGW4TVY2oDUcgFFVuLnuwtDNqIEbBdMxQ1+JHpr3h6huCl4y3EV6ArAcNbfw/u0ulNRvgvBQik9QfJb9GM+TGJ7pneWhSKYThh+abpCIEedDDxeckNZb7hGCAlqmwYsLaB46psBKZOwM0H7qjAczlUjMwE1lp4uEt4cLVEi7YH+DvhJMl56jeg4Pbkky+0gZ6nxSSA9CNmWWG5qgRDNcwqdYVNRzDSKFNSjj61QhibBy1xtRHkQoGjHZgm1hqFg661DICbVewjNZ1jM11qCPD96AtTzX7ha0HnBw4gtRPpW17IDbUtGc+ueIe1o2G7WVwLtQyBR17XkAp6QqsFlqe2jtb3yjI85Gpg/a3NYhZ6ZytadguEx4QVp/WqdVVZZwaoJzap196mXUa1+uEeBXo8dbdpe1rKhHC0wDtU3UERP+CxWp1M4Rqhvk/tQWqAIGqEbWp1jajrAi8del7VV1EKnMDOeDGqghj1OQrPXfG/aB8TB1+dbPnG5Q9c9YW1MFhHC+1FmgLURwI8F3V01Sqj3Dl1WdU7XyZX+bWC21WcMfWe13NTOEU4EdbHUR5ryH3VS13tRmXW169fsbX1ZJLXWh1tOkSUQamdqhjKweyvZhfprwJA0myl1GxVwNheJsgWG0GlA1nGiDWXbwNKDdoZoN2DXBqCV4miTV4p6IDthzQqAUCEqVbWLKic+bihFVtYltAUiAwlMFQ28QjDTboOwrDTwCTKe+Zw1aVO2OcLH+iZveA64KiBP52gKgPnpkN8inroA4V0HIRPYMjRmEHQZSKI3bJTRvPpIwg1bviwlR+bvB+VAxNw3n+dDZQA9YryUw0mNZFpzjJKzDYrBg4a2HUoD6LDSfBHYSQZz6UN/DR2DLwC/nw32NIXDH52glwtdjGIu8jr4A42YPQRqNllWBAZhMgFVVq4filL4SN00B2nX6jjfPpd8hkIjjEJtAb41O4g3mL55NiOBtDGNqKCI2CprST6Cr6kjR2mQNQjcJB2VOuHU3p61+nE072FTbEqyNU6No1O4mNRGC2NVDWtKCN6eh42tYa0lKILgyjUaABogqRM2gGozUdhQu7fjDijwXKTMEGgwhp3BTSueMM3P65CnGDg1oDSe4kl05Bw6Aqj+izQU+pGmc2fA29pjUiFX0YTm6sHfMWGXNnGlmDnNzsPc0850hcJUClE0MMFloW5f0EwWKKKb5BBquREHAtngd8Hpl9QQBoPJN8jXn6WAKP0H1qKxlH52gZaH2XbBWLfBZzlcenaCllnhf0GOqF8p4bwtWaHFhR+xILC3YlZFoiFyo0Lc1ASWW5bXLR5x6NC0ctvQXC0h525TPFTyQEA2UXl9QbepjlLvn+r8tcfg9DqoEoTdYeWqLZ6gItO5akEEYURBuUR6hKii20hZ1vpbzkxwWq1fI1FR3Lu5nSNkl8K8rV0nJxytqC1XIwCpK0eJcftmo8WQcPcHQw3wea2JKLarUk8hGwSJb6toIYPrlInsdkretW6Di2UK7rX+YqtRNlKoLGRNv0gbGtct8wKtOQVbYb1jrX2FHyWSLZashbNIqCnIbPnzZ6toSPxAQ1FspjrqGIKTR7cVjdrKAjwvDNW0sFzGq85/x1wKcgqaQ1pWm1t+gAkgNthod20/NQlfyX85YLnPERSBCWTJK1E7ReXKR+0vJhyJXkeRJ01jMszBZgM7UvEoVqxSMTMJCaLLLqU7CY8iEeNkHTWHtWDgQoHtu7Q8CMK6lEvFhc4MhQmIoMLvO2R1pCeO0Lt3RQpVbV8mOonwyz7Z1A/teFY2D/tEUsYlLtAHaNhgdHCeu2AdRSVu0nelpVDLEeWxY4lztEHQZhwd37dJ5rJy7QbjKywtckVpJ/0MpFC5ouMa0huz4Q4p24kSfUgRx1HXEmC88ReR0GRNsHNAwlRHZQn3td2Hh1zu77dh3XIIHZVJFJXHV7aZ4skqx1vSmeNUmMdkXkB12SQaHR3tJ9LpR3leSnfZFroosiCIvJtHvh6ztJMqR6JS07UJ3jJRnU1IDl4HaVIWJc7frgRt/kal6dYQ5Z7AkdN3jZ1ptYiREiYeIbb9IdS8RV53aVa3jCUEtBLiJ0KSS5XHF8deUuJ1YdkOAJ0hdkONcEwuAXXDiNl3nTJ2XYvrdInHtDnRl1W1T+ZfR7JRnp53mdykQF7le6ZSV3deo3rZ3ud+7WF072YiYN6mgVnh9JHttSClg/S5beaLIpGeKikvR6KYsC9djzSc1Ip/Xb1KmgMDXoAQpflHTV8R8YluLddiwPCnY1wKQN2YpQ7UQ24pIldJqegz8rpp48uRWAX/5KseC1AxLNLTX7dyhb3xe5KsTEUmFROL3lgdksXqYCZtpBYVjy/NVupiWRSGMB7diHRYW7d9GUQEBoksRHghxcMQUpPdX+Uln9USmnd3a5x3TYVXd53e5TvmoJO92UZLRS4JGeSWXIn+gh3brrFgt3eWRpCEuY90nsRoptC2kAFhyQVYRcaaWFFWPRPV8xZReLBQ9ZmUT2L8zWoT19hIEBuD0wi7bz2+eN3Y0VBO4uSrFSxIEGd21Z9PWTqsZQmP9mOJuxUZGOQJhT+AGpXnsL1TF9eBNZjwr3UJBS9GOUqWaWbmvL30wMvT0UNQeIAtCuZ4PbjBQlXGK5kUxhJpb2m9ZmdcFQlOtl9kFEqRrxAVgB9Rd1jF+PRLkC9Gxcr3zQ3vXMXPM8PcWDu9vEPuA/aNMc72Ws43Xlm+UkJXH33d+cDD0bSSvZnXzQtvV5inFJPSAhUBjuPr209uvbSEe92PSrGFBUJa71AxRIfb3W9eGSRUUAnXbhwx9E1lyWGqdOeyWlWMgNYa99jJWBTd9GhiTJbK7BQP2NtIiBP199Q3fYbDtxDVt3xmPcOQ2YBRTkWCYVtDXYTvmNhtQrXQgMCOm4g5pXfjz6x/VQg8NXTRf0VlejbrBlZNjRTBOpNGYFmoBdoBNnLgwOev2h6AOIlkP94ja2wQ959ZoqaNv4Dn2X9pTYNn/a+/Wf2IwAGAhlnZNjZv33Z0TQwbFp0YGQHuN6A89leoO/Tf3+NS+twX9gWARX52guGWFmoDezcJDJaLfok1dN7aTRmZg6TZhpLZOTSgZOiW/Vv5C+HA31kz4pTezWKw20FEQZNz/Whn2yd/Uum0mYDrs1dN66TvaCDlTZ/rX6dGbxmx+AigPoX94g8f7IDHmmA59NioCIN+GvvnQPn92Geo6wD2A2IO4DPjZYOCDczZhCmDVgyU2QBT/UYMcOwg+/2faoiIoNJN1A6/52DV/RmEqDVgx52OSR/aGlo+PgxoMspHfRuxo+Hzbc1nIz0bfzxDLzeAnM5JPkdGfNKSMkOkaWQ4kPoin0XT7E1m3f81G6oSFPZ/MzcPbp6YTbrcrNyuIsg7vQ1Q5boZYP9iDC7YBerZhv2E/cArVYD9h0NiE2Ns3lX2xHgUqq6EXoPIQotIDUr9DEDpahwRhKD7qtmACqJEW+A+e0N/MYwEoqND48lUMNDFQxvL7D+jsYgCg8w/UPD6ZOEvLHDQhksXIONw0QZ+YVjrnDD6dLpOAdDQoOdBeOhDoMNXhuyFE4MOcZIcgZNQtoPYtDSBk8OdOFw76FiY6kB0MLQ0YTrZTKiHpQgphBirLWLwHoRI7nOq+A/p5hPQ6HJv6aI2YqWopoBmgJhESjKgYwOBg7p9O5znvAQGtcPcPQjSBm8NiKDw+f3t4e8lsO7QMOGMBHDVJMtAsGgIz/g7owYdwpW189eKP+KSaO2HzIwo9cNYRuYbUMbuKI//Yw4XIworq1rI6CNtyLw0IbVQSI4U4sjs4Xqb+KzQ2GHdhFboLACgG0qaPUOYwxWGyGlQzfSuoSssyO4jjuIDCwjjkB0PLeTo20OUjPjP1JthEzh0P2E2uKGPojooxmiGjmw4KMlo1UHOK+jPI4AjujewyaPOjAo/qN4wB8hKM0A2w1phLhoIrPJUjyoa5DHuyhsWQ6wXutcoZcqDZ+l1jN9GxUaow+BIzNj2hlUOPK9Y3wWUVNY22ODDPbbMCMV1yszAttJoRvF6IyYAONjjFhnfqjjS1Ot3lmy/WUOSxFLliAAWMdrBmTqERdSBouG4wd04wRMQ7aXdy3tbEnjsliVwixFpluoXS82l933E4Gf55NWZlE+NgFrhbeNcZQIhD0mF1MXgyw9soC65YgD40eO1ZO42RbFg9hIpkv4B3YIgxxME6xDExrcQhOyW5ZK3EXjqRT6E9x39ZkUwyBXnxZx0ZcQkRCWeNdeNpWxYHvBNZKEx5rRY2EwBYJ0PseRNwZ5kvNr0TInkTEVRxMBROaSFBEJar5YmRhNjglE/9mCTIEDySuZ/4zn2W9PE9+N29vvfuMW4QVuxDITy9WX0bF+MmOo/j/E9bGSTwmXH0rxMHOn2WsBk0QVXaGxUBPwIyxTfQBxL+D73KT240xMNYCk0xNuaMkwPVaYYk/u5YgDKrENIcXfUbaLWNZFob99VKoP32kEcpFgj9rXAFOfAzMoMArW0/dYZxTwUwv1AZf0WTWjFlyLw6a+4GEOlNB2sJlPChmqPlMnIBRUHbKxVwVX5aEwoSTGp6zaEI56+PxYWXZT53uBg4WLU1NLgYXgeBgO++BfWhEYMviCXChEvkNOq63SE3oDBPmNbmFTzFWuEzTXvhVMLTArciGt+ZU7uB/onfgMXshUwY2AlTlyAAEF6HFou0+6qVtcF1Tx6I+1bgqujFZO9h8hCZyoIidWWIlMSY9NioR+AVa+tEckiGSJSSLMUSJifstAzTi7RHJHTFiSDNZIIAe8hLFPFpO1EGAlkkSqoz0wNRq+U/vdP5BMAe4pNTHqAjNz+7xb0GwzJ09P5B+FUwAHlDjFqX1XT1UzkqozAweb2HTMyHH5UzIFV0NwozpZTPDJdSBjJtTxliOUF63U2zNEGTpSS0gzMyAei+T5rBk0cc2ssaC5DKznAYApeNYtwPNrbZOM3A0ik10YYQg7LOSInuhrPM+hKVjXFDvOTIWjtdtYDmzQDg8zMrQpsIrDP+1rRdD3gR8L+XUw8GazDOzTsDSB0wdsw6VJ6wcN9CCBSSNDDxYCBhqXG+aMFAyABbfXjALZmMDhUFKaMMHNL6jxlUh36YhA4MRl1MJ7N2weuncgc1CCG7PAtDs9zC4Bhc4c7CwOcyiErQcYBbMVzbKEcg2z0jO7P7hMcz7BNzGyPsrmwz+mB3QZRoJ3MVzFaMYJez+/eChAwacxXOaoasBHMVzOiWXXLw2c8mU/wHcwbALzSdUtQ74OvrnNZw2qU7M5laCEumrw0ZTqgaKIcNAZoVXo8fMRNds7dKrz+83vm8zW847NHQQpdmVrzl8GgGgRKcPrBdzIZSZlDz3c3Fh+zls/bMCIpcM/ODwKmTLCRzGMjrDXglgcAPz154gWDRwmFV2jw5scwuUt1ic7XPphAC2PM2GaCFnPPQK84HDfoDhBvMdlW8CfP9zRcGUx4LxieLMiMlcPFWGIL9oojhy0iOIA4gNiKwsAZtYn2MQLQiJ8DdgBduwvRQ1iEIt2IvC5gxpTpNeiB92XgY31FwAATd2BBlfshmKWd9jLEHj50JO10TSi8UFUgd9rXGegu9fIvrjz4ovAYBgPe+Mf5e/lxnpM8cxjM3dNYbotuFoyJdMqLrYcHGG9EecIExxilpNDexii+dBBL2ixzCTx1IDOE0BdPfWZVIfi19n74a4S4XEZGi9L6IxAS6Ihm9i+UzHUTCjhlandpecPE+L/9Ub5NZiS4Hl/TeMbks9O9MNUvOOAsWqD+Ox0qd1iW5QWJkWLITnJ0qxcav452xH6kiVtL1sRerO9ITQHE2yCEDUvxSClD71rYx3T+CVLKcRot+56i+5Nza702XHjLTjkfg8Twy1FZeOkOQAkDLCoTb2qTbWtsvpLG9f44qSLS5pbhB0vf475LYS3jkqh6dmA1PNrwAVrAwXOeq4TdNhkDj6Gw2h81sVny1W3I+20L8s2iJIACvsxUi0jQyLJDdWYkK64+E2YKwMaAXgteivuMorN8hx21ZmUxIoLxzjnH5qdSWWtgSKxi34FVBt5fRmjLEetStjwcQWP5nzGOVkHjDJK+isUtyc9bGUGVK0UvorgQeUp3j2K1PKPl2CFm1G9BmcKuFKaKz05x+UpZMvAKIFaAXFToqwIVh+ciaAXoBMq0Ss/+HMzUv++QE5SvEKOM5tm0r2wU4s9Ol/ijMixayscEmreWRMFSB3Rb7BKBzSwzAOl8/hLlSr0foTBarSIdgj3BHix+b/+MMbzBczr063AsKEa5avkBt019lmrlCkGv1LuSJhZ4TZKz6uarWbfEtJZ3q5PG5r2q4bQjy6jvTF84fclbG95DsEX47TXcJyHVryq0H7lr+cEaupBDcaAXe6oS/iv8BCcZ2vZrba034oxTWc2v9rFVj06d+U05DmsrKegnQ8TPK8Qq9rlsLWsDlka8YqhLtqywqtrC66FIbThq/S39rfS5OukgDC+1QmGoKz040gdgTPh6GLOSvhsVa2GoZc51+heu6GM/bzCwrINPCsr9ci2lHOF5nQEh3jucRHAAaQkAPPe1WJRWh/M9MQBtqweE4TEuloql0UkxHyE9K+9MtaZOg5hQWrD7jja17B4Txa9TBTLCQdUgEbIZUXYRZJG6cug5YqN+ssZKQSQv1qwGx3W3qDG7HBp11xT/OsbEue77FwFWQK0t1uGxeUwLyG9Ws+ljqsxs/wx6mBt9hq8GJuz2oOeGWrLlG8/WQttWdhv31PE8Jsv2K8V0E7+Xk20E9wUy9puKWcm0XCbLRcXhvD2aG7dnal+be1lydR67nT66+2G941ktocs46zYSX7K9YKSPRUL9pEbMBpNTwmJOJ06KuHIBbnmzfR7e4406HGzfzabMZrCZrEvY28q2mb7GaSE1EpQiq6DGfQym1dNU96W0G2Q25vWDbGICvuUoUu2W0bmK+IMsVvTjOU9GsVbpW0GvZbmubhbmS2W87nxb2W0MEarCW3aq1yPW7iA2bb/i9Zt5LvgNvX50q6tITb2SPFLZbu9V0g+RcBRHqKxNW0qY+KVMoNvzb8q0/WZbsEHXV9yEq3JCq1cgYh2V1WfhTOV1MvmjHyeCtUX5xr69feqprkncduIorW+DL7bfAQNtO18W5tsprEfdx00m5q0us9EiW0Hb3bDIMcaH+4gfJ7sQU/hdsg7aFjYmi4kO6/7ZIgMYNupbtpBDuXLaWxFIMmAq4dt61py9Kt7bNi3HrbbAdUHbbbbtdkhv1jamjvJF3JFX6nbdNY9srbrO+dueFdO8AEbbYteMMDbpVheD2bijGXqmYIwNlvZgF69NBMFIO4bMTjzEaLsy76lNBCcRgSErtkSt6+LDq7Fzp/HS7JstpSa7eu+LtrYjdFoEHQushLtbWJQ8BmiVELlmFIJ5sFJXpVbdpQCwOX7eu4FYyynNCO72lR7tqaKzT7swuG1cToB7sVSy67hT/VzCmVF0u7DhZVlQ5VpagTebv2Vdu4nvYwW2tHuphiMNQQ9u4e1FpwDk+NpXB7/u/bywOvu2i6x7ru/JUGuUVZ7sO7WVaBB2a9e0lVyuY4c3tpVKVaHuKu2VVOESN2Dg1GFV4OnI1na2ro3vbav/bfgBwWbvu6x73uwdUg1bdnPv1VyrrHsfNPVZ1W97LYPvbrVLrpXs57FkKG7BKle9oSAys1ePvk0iSONV4usextAhE41WG6bK14GtVRuu++zLH4l1eOA5V7ewa5+7pykvu9Vp1Z1pv7Z0B/s1VysK/jGE1bjVXcFC0ECjVugB/JqR7dknjRKVXe2W7O7s+9hiKur1epCx7R2cgd9V52jAdWV47g+FJ7caMDUP7E+15Jluxey7v77Zbu7ASxXu1geUHR+83vC7ftDjVt2XwAywPN0FNwex7pWCjW9jkNXe7S6C9nwe3uF7hIeBjBNalPW76U3IuxgxGOxgWWmDmoYXTbqq2EckAGMIkR5uhz2BOW+iyDBDgxhzouoqHEGBbG5mYFaCUWHG6jAqH9rmwk6oThyhbE9RYbYdmVp07eHWBVh6OVaMIYwURR6jCaRZ32g/focGovvnYf0g6h6rDmEv4LRbM1gS0izxVuZVHUJ0ilJ6W+L9ZhKycWRcChKnVbCYuEJHfbqlZrbrPtvr6JhS5ofZHhSwKCGViVnkshH6061ZiOlHl8iNW7yEeH+Hp08PkqNtqJL6dqXPiSCdHpk80dmHsVivnXsjR3RagRBjGkeZWRcIyJVHSx+dCMiOul8m5WRY+aZGHUx9QVfQZR2r45obmsCrfYQx/PWnHVNpCiBWrqE5NHHXRyU4RHFIW0d5O15EUfgWlR3kcBLsq6MfkJ2S1HDhgax9ZrJmeR27VDOqx/ZayWCEe8E098y14IPHoO7sg8AchgW3lkaskc1VjspGA4n86zlNaN0vvhaHahf4NNaiHg4jifB11hptYWGf4EScbWnZoyVnogKi/jAqPm+zkQbfzqioCVhNRoEC64Q58AsnCKhTlFOnJ0pgAuPJx+tlDPGCViYe2y4AbSnNWEXKe2AxE5UryvoIIK5YH3JPLqndCpaoWV1Sr6BcwNjiFgCeWoPWlA2JmMF4fYb8lZguYWWUlkQmLFU5jWY9p1iWppxOHBlhazRdZRzYcGS7iSbhNiphYZWJYEhZNiWO5ohnup+lhS4vedrpV6Cp0h4hnWYMVg8ZYG/LZWNhFIqcXY8Z772unWoBqfaquIv1j5nUZ21g24EuXGf1YsmlzG1SgZ/KT+nQkD6e6exuh56NnECn9hk542qdimmwTUGI1FPZ2M0d6Op/GcXYDp7MgjnwBU4oBnj2KE7BebDbdbvYNerF5tnxtpLh64kZyOe4Gy5xsWlnIeATi8QZKRtJ+4bxY+lW4fI3OfN5tBojjlnICJeeBewuBppunnNjo2n6ap0JCHnxuGrguR9MI6d+OX54ri+g1sqri64b52sXynD56UqGnyp07g3nw59djnnL2AOdO4mOM57+cxp3ue1gcpzMqYnUCdUzWgzzhni05J3Pni12ZOfP0qzzETs0N4gPhyLEXl6bD6dQS48C6frAua+M0bTE1uMGZU1OoUmLWGxxfsTtWeCeegZ473lCXV48RkegtpHePmED4+WH0ZPmI4WPj7F2haSx0l1WpyT4lwJl/sAE7Z7FZ2h0RZ7jr2QaiQTal5uO3KZcbbXFgACFxdMTaE7BlCXIxDxsWqSYCHDTYcGQRNjMFl8A0BwUENTFO13E4jGWXtE1CUi9Y8EJeFHkMeYRsToExjmU7FvQGDqb3l3UWnwq5BRNq9lHsRlCX5pgnEm1nB8OYkZYBNYbL28/eLqj9MUyIjFXUU6FMz9h8yVeTmZV6Cu1XTF3zluhzGOIBYRfBB1yKoVkFSMKmXV+t47QAl6URwxu6oNflwbbPIL+o2mGNfnGenKgi1EHVxwQb2GoG1dm1ihCWXdXM14oTHKfpgtdYT0PASjTXGI51dZQ81+1edE21/hyxIPV7pfPIaDJNJHXwYwYQ7XWZjdf7XPktdftX716df7wN1x8CUk6Z49fWX4oHcQz1R5+1c5h7hnFgIoj11BP0gdxPzY9e7VyPDWmSzqNdVD0ptDe7pg165e7E1Lf1J7XkSADccGe1+cbcSZ12td8EH18siE3ExBbgPXC17jf/XaJgKntXcE2WCEct0o9co3e6IRyAosN/EZnGhahDfFGrrc+rnXqxizcWn511IT03ral9dk3V1wqCrXi11IR/MMN6TeKEvLjOpbXfBM1KfXx1xwT63NN+ddKQdxLrXU4EN08aZI4tzaNRE+IuwR5XtFFzAO6Ap1lBDjreC7fB8FV0KlY+Xt++4u31ulWT+34uwjPkX8uwzlWQUBJFA1RHtx4Ah3YK6pl+30dxs7EguYMHcp3+Ln7fyw77hyCoowdznfXKbilj6SACwNsP5381INfe35d3nDJ3rt+EAS7VkBnf13A1nYTh3v8arNR39d0HtVQzd97ehu7d0xGR3Vd8yIZbBdyKAnmLYNnf136dFc0iUCd7Pd13/dwCVx3Xd97dQ2B8kveTW7XqvcJ3nFoPfPpdYl3cYc2FGPeV38sKPcai0997ekgSJOPc33/ftPfkaaTc3cn3W+HQAl3YQLffsg992nR+JW94RfXOu95ne6pBYAA+d85OZXcp3HZpRpknJ4gnfTVp+cA8t3yyutDX3ud8XdQPLdwGbKzEd0fcJ3UqU3dYP/d0K0H3c3R+IJ3k+unfEP4U0glkPfCwBIIPzjgfh93LOT2r0PE4hQ+Z3gSFSrIP1d+lowwHD1hLF8BD4gusPzIi0jXg4D5rjUPWvAg/qUETc1cmzrV7iCYaIBChVb9ad8GkM1e/cYi5SXIsQN6Pwqe6NQZKUE6jNwTI1BkA+bkhY9Xa5/Zii2PNRqYMgEkhl4NqPDqdIrgF9j3kQWPNOoX0YGeaBY8UKkEDobmPOj9ANGPBSEE/qF4Qz48aPVj62wkoBj6xDCGqyMk8JPnKeKAWPqrqo+GYeBHGNb9cA5qktKXE0ENJPhtTQP/Jb+EmNGD3euU/LAaGdIoUo2T8QNBzSBCY/YZ70GE8NPiGRFg+gjj0YPIqtqBY9Sen/frqBPFT/4P66ksr4+mW3o3mrpP2GUM+bYiz3JnGCC6fE9LPRXIqCrPiGUFkkEmz5Jl5PJBB09HPiWR8C2PhRhrr1PVHmTpVzBoBY+juIDS8uVjuF7NYZNEDPKBrzn0ezmJmxFC/WSFPJ35ufeYekwVfPidD8+TmoL/88/4gLwocxbI7a1dgO1qtjJRLDh9jJRHTOze0QbFh9Gr/SaL0BvjNBR2TunY8yAXVUdMraMh87mHpa08o1L1p5atH+eS/leTKvHMRircnXh4W9vi66cv7izlsYvqix0YUvOR0xt14Z9fjvEy2S6C2XSaL0NKp4xL1KqwyJR5Zu4kQlu/kGeOL6HkSbvUlLkYcOr/Mv4vyxwpvAyhS3i9KvVSELQXthrY2Cjr+7nXi71YhbpJnL/LzK8gW0r0S92QMOPjL1gSFoS+Uv1WhTBhuEMrpaBvWxda83jFeasWsvck8YgZSYryBZKmqL1KBO32J5Csvr2WESINjemKesZvBDUC9ttVFa2xQr77hDIiLt/LnVfL1PqW9vrvNJKemzgqSdjHjvGKamzI/tlFBqYLbwrgGZjyKGmCpQONbFHtTTfajYjalvs9DvX2Ipkyo5A4KkiGLGWFy7pBKawmLxfT6kQEpKySHHSIf2Vk2kpVoMRnyw6OUO/9vveR8RUprjwZlD1Lb42+1ZF7zmkuiD9uFa9vuJABgxxN72M2wojua+9hpCaI7k9vgaWJhcxpI1GlMjbl1O+1pa7WQ5RQUcMmmmMu7wJmfvrxFVhNZr70dg4RHsc28ZpbQ8dC/vGH7JiQxgHyWmtvRMaB+44aYiHaQfuWQHBzpxTvNDYfYOFASfW7b4+9omhDu290fhH7VkLDs6XbjuO/2cR/vY2yGU6eaaoAu8Cf+5znetq3H2R8QqJKb2kQfJ78Jh4dLH/B9LAXbxLnKf8OnSPxWmT0ek/28VlZk6NdSRM6mqn2agRadRn2mKhSc6Qwn5wGngTeZ41H4xPCfVuCaIfvu2LuqKfbl6x3ufsny+++kIn71pIf15HZ+ifrmRZ+R4OF+A2h0h2pVAmZGgtF9EQKUxReR3ZF7fG0g1os7CpfiX3g+UVO2PF/zaKU0SzryMd9nBKPsW61dpB8FihV9yeQehXWt57kBb/l57glblowCjNOXhI8tDPvBYFXIF3LjQTKGQ26y7RZLSW64N9bo9CeMO9fUSBcHY2nX18ktKrXwMEW0RQc18zBzcoMuMJq374ENBU3yiEVfKFvMF1BkFrEeNfjq6OVRo7QWistfzcj0G5lm34K2LfvG8MF8o030HanfO3zonPB8SHd9E2jFt9+rBMVkt+rBWaAd+pBp0uq2dKdigcH6W20vsHFBnqNfMbBxllEnnBzq0BV9yEP6mjtfP1pd+Nfd37ej2tS6+WhutfK2j98BUIVujI/h8mCH7Y8P8cHU/5xzD+QhMMf9+Q/JPyD9E2304D94/n3+fL6dBIez9poIloD/dfFIX99ihvQWL8czDwXSHA/FiVyHg/wycrbqWYP6jt8hG3yS1KteEFd+026llGgpvZoUAF6wneEyF1Xjdkp2/pJv0fGG/udlDZEP8Neb8NUtv1Fu8lCLyuOmzmiZ9bpaD0u4ls6s7T7/paAnYMmWagSeOCU26WkvFWJ9YTu0CJ6yWlrFXXcTiFcJvv2e0edZ1dH8aJgif7bh/NHeIle26Wqu2qJVOou0e/Rf5+0l/X4HKDHLU7YX8V/qHQUlyGniXolqaUHaYlh/hO5YmPCP9pX+JSdiRM6V/OieX9qaTcaIn1/PD62i6JWiaZgohEyZ7+5zVCWH8Zz2UpH/naXK4Qm9/D4SStOJIXGOF+dZCfJpBdHf03/xwfvzX9qa5XUH/H/CXb0k7/RSx380NuB3WUsq9ictWP/LCafYy6Bf0f8y6hQYP/H/YsxF/vLSbordQLBrdNFKQpaXSDdJL51iKbrvuWkCgAvrrgA336zdBh6DiBbpIAoFLiwDZSQA0uR1vJF5WLQCAGHGVbC4VRZBrYMAzhUgEZbCw4LxeSD6LZKS2gIxYXST3DphfAFKgHOosA0yDDoOxblePFoVhC1bC4FxbOrN0DMAvlZCA1RbeLJUBova5ZkAqTZBLaQEhLIgGUA8JYbbEvLEvf1Z1gZV5SA0N5z6ZJYGePloKOEkJugcV6gxOQGh5WCCKAkxz5LT3D1HNFzqAi14DrZzxaAm17OOZpbg4cArOA7158tHPLJxEcAzLKv5ngSIwCFPFzBgI3L6/AYBpvAFaMgTOpZvH7r7OSIH7mOB64cP5bFvDPDsyNhblvEFaxA1IE1vPiSKHWRaIrHgFqHAGZ8BIlrozOr6RvTpDHTFQE0JCULmA1KwerSUAwzW/4wtHKz2A73RwkD6bYxc9xitAvqJKWlp/mOmaeBaSyPfWoHZIEFoWlCULlAxhJgdYYJyoV7qAtQ0rAxdloUbH1b9BMVq49De5woY6bctXMrTAvlrDIIYJCtHiwDAllo9oRxJQ2cYHStdF647WmxzqYZDK2BFrt/NNA8zRX66tQY4UzYkLaWa7ZheJ4Hqte7b3AnyxnTWl7YzOr7+vfGYShB1orAnGx8of7aryKNr6HM6ZhtAI6+tHYIlWaHbfAxGzlId4E7BCSx/dHGzfBR4HOtYUq7fCEHGJDEK1bRyTXA2WzeXOpCXA1lR1IK1Y2wVmY6tFNqpoHoHptB4EshdNqJvaCychUpAhWZEGkbCoHmdJuw3TOr6Mg18xytNDaQgx5DmWGEF5tI3KnTIJChA/+KzII35CkNXw5IQ2QO/EFJUZXB4d3ZiIJILIrG/CZT8HPeLag39Amg0r6IvYSLSnVM7oyYURoePLCJnXqSCCd9SqnE7woVIbDhnbU4ugrMCanCHAug06BugsrQwlHEJGYdLDPYLQpK1FErpYL3AyvPOAypO06tnHd6aFCMFenf6R9IFSgRghs6gPdKLpYAMG6pGkDpYJLDyYJWReg90FZYMsGanCnTleNlIJYVjClYdsAzBNUDOpTM7OguvChnKs5xgjsF+gws7tYSV6dgy1RFnW3BVgocHVnUbCGjPMGTYHMEtKLMHzYPM7UpaCDNpNbBdnbGSDgtRooXWCCegnNJDnX0HnYXcHcpXsFqNW7CidScEznJHAvYWcG44Jc41FTpRiRI7Cm4SC73SE+DreCC6i4bcFjNPgzcdDVIKfSgwreJaSaRJ3DrYcDwAQysDKgx2j4XEuywyAr5qUDSL0XaCFY+e17UXDPA+5Oi652FCDIA6Ra5AhFb+IVsp66OeKi5XNr4Qqv4MoGPwpdUiFL6XNrhIGvwxtAJC5SGsbToVoHEQiebjxWpAwLRtBeBdiHjoNX575RzoVwDJJC+WzoLIMerphKNDEQn2ZiQuiFq1ZfyZpPXLi/aAwEQ70oToGPx8/ZZDKQpfQDxI5BC+DCqSQnSHLTNVCjIHiH16bCoDxevQzzSSHs/XVBL6b77CQt4LgIeSED6U9BChZho5oMiqH9en5UbNEHWQ1oFEoAfzk/NtBLrQGCnoIiFBQ+up2+GyEbGAQw4LbwGe6RiFIhT3SLhU5ID6K1C7oAahh6YdBuQ5KEZQjmagvbiForBKFC1ZfwY/HlAWQxYHqQrpopQyKHFhUZAhQqVYDoXJrALJiGr6ddCsQ3UofPH8I5Q074+oGwZOQ5fylrEtCSQuqGDQxX7CQ5qCNoRYzz6Q6RuoDPxHfeZBGoN/q0hM9A79KaGtQmyCTQ1VDtoAvyIwRiHXzWQYd1arar6QCL0tLpq9QziGnfcCE3AI6IOBVQAt2CwxXQwFSJUO5z5vVWbejSwI+3G6Hinct6GjHQKPQnzZGzX5rWgjwIHrchZx+ZtbEQjFaTfFeZFBayTqQooIB+OFqMrY/yKtGr4V6GNp7fUPS2ddGE6+A/6eBHPxLOCb7FBYuAUtdb68Q3dbVBeiHUtXmyzQ6hbXfGGLELeoITQ5lr5Q3lp2+RZK0w+KF8QnpD1BEvx1dAOA8/MiHgg5mGCwmfyKtF76kw1vwq/T/SYwqH5IwnVoyw9PQBtYxSSwqXzMddxRiwiuYIgnKGutT4L5Qrlp2+PWHxQ7WHY/GGGetImwl+VWFmwkSBl1On5NQvzq2/AfzSwvlYiQqPx2Q7GHEg1mFzoMkEiwyUEs+OFpVfWgKKtEX6H9NGH9fUgycw+4F5qSuCMhVSEGDC2GC/SiAc5beR0wo2Gryf2EoGaFoOQqGFMhDPwpw+UFOoROGChLpZbzLPymQsuqchIyFEw6JTOQ/GEp6TOF2wtOFuwq1aU/fAw1wrzDxw/bCVwrPQxwvfK9xa0AXQ6JChAGq6CYU369tQNTlXCBBCPY8SxyV/o1XSxAjwzeJjwxq5zwq0Fu/Vq7WVLMLK4fKrniFKrETHoju7CvabwnFyHVZsLniKM5B7XfanwreENVXcLniZM4MuVMI/AQG7rwtLQCIG1CmVClw8PfEA7ETPalhFOCqOAyrX7ODif2Iva77XeFwHNSrNhMBFkWGvYx7Q+Hd7MfZD/PPiSuVvYyVOBEd7f0KXwuaJ2EKcIqqQmwFVGGQy6M/ROdMqrbaOLDtnKfZXVTcKYI+qoL7GXR0CVNwr7cly0GDfZU6JhG2uZ1yxhP+HqSJaryaIBFVuM/aIIpLTa4ANyAI8WCEGQ/Yb/acaAGF/acItu6ZuXapThNBE/7A+FIIk6qaSHh4s4eRHlufrSvIJOz3VJg4YROhFnw0g4v/VRFluT6p3YT+GI3dA47wmmDMInA5PaLhE9uadz1hPhGAyExG8IoqLCIjxGII/nBTuQg7E6XRHSIhxEVabKo2OatwYHJREFEJ6Rj/YxHaIwJFyIpdx8QQxFBI7C4vPAnLDdXtriHKf7mwG6Lw1bJGfw4jDyHKAGUVQQ5BwPWCQvSRBlI7aC8RFeGlDU2a5PGkAn9dsCCwPMGlgUvaSvL6C6PMDIvYVpGaPHpFaFaqBtIiKYUQSsET0fpELWcDwW0QiCWGdsIZg8XA0ZNZRMHLTzqzNx7ZwZpH/ST/DsZWZG1ggsZADFnjUjU7AVqJTQjIwsbYyLpERPAZEo4aDx79RaBzgFl7jIhJ7QQdCKkvR5G6DXeBpwOSB9IhJ5V7emRvItDLZ7GYb/SIiiFPdPYwlA6QBFAFHCQF5H/SGjgp5IKFzQLbxDIrfp2JQ5H/SXJFQZaRREuCcFUkH4xh6AIilg3FFrZcOZnImV4KFRp5IZZrzHI8AaookCEaUSEpJ6VwgavJFiEmNGDRuIMBMqCZYkoj0E+MWEz4oloYYvYZFXuU8LXI/5F6ma5ykgZzw2jPlEMyRFG1gTlFZmRDInwT0JbgsVF7QOVH64b5G6DR5DYowVFb9HVFAoy6QYorZ6qAWaBw4aRQLFI57PI1nAQo0p5JoDVGwovErKmAAGZI9wAn9JkbU5DCEU5JnKk5VCEJAuIYc5R9w9dIJzeo9BDklVbqzmQhrLjepFIveaEsZTV77hRYwyaKI5BwrD6W1EQGS5EeaErSVrWoamJzQ7b4yaUxZxo+jJAgxpDgZRl4BoDFBcZaN7P2N8oCZQWBPhQQFRQUSEZo9lSthLzpponuqhrSD5SbFVqdojupJozNHYRXWLyvYdH+rWXJVIJKEyaCo7srGTRKbAwE9oljb0wBNEZlF6BKbR5ajon+BaLU1oVwYf68fJK54BWLIrotfpeTBNE+lTGLHo+VZDoizbjozdGz2btE7o3ZC/tfODhvC6HKNQLb3jSgDyHY5xhbYr6qAKkB6goe51iRzYfo+ciO6b9ErODzZ/ohaBFDHAHYQli7+IPcowLe3KPlZDFhzJVY1jSUoxQ1sailD2HBGVGBSlP9auoD8oboccqBQwUEVwVDEsgq0oewudTno7SGXLJuZmQlqRMYlaA1hJDENokMaL/DSFXqUKTRlfOGPIc3KJlZjFLgEhYs+C2jvhJDHVQdjFFQ4nY2GOXzMyaco5Q5PJMOZlYaDaza7Qo/rWbEvwqYsVAYYxTFFhEjE9qYjHhQ55ghjQjESYvjFGY8kFTSMBYD6HlTnwPyEFbasoTlUgKIgvBA5+dzGHzZXwYgnFArlI/R65a0q76UXJSY3jHVSVjGOAvTF2+ICBzIejGFNMLFOYFeZdNfDEZlH3yIwITHOrSaH25YTHCGOZAXQy1aUAQFS9YGGA0nJUifccXwlY/1F+TZxywOIrEzHFayc8crHFYyeFmiTvo1YwrGJDJg4WGCmLlYiRotYl9zmsArG9YviANY30jDYrrFRo5i5lDZSLpgJfCwzcVSb4ebHZqRbGeJbkAfpEP4H9EgivTLyIVgadLp/P9qEqEAjx/KaQldEyRzY0toJ/acZv4fbHV/eRTXQD9KbtdBDn4S6ZeRWbEfpAToLyFbECoFRJvY59GvYpAh1/d0BL4Fv5A4r56B/DL6b4dv4tJcx5/dOdozPVDrLYvAi7zBbFI41bFL4U2EsqNJ64rVLqJNTCBxgHLq9wHx57o+To1OPdD44x7GoQMsDk40JL/oTVLY417GRIfHEJdT7Go4j7Gg45HGiqc/AYLQyLNPVf7V/SnEEgfHGxSdlQSoIXEtdQnE2pElY7Y5FBC4pSTwOYcD447340AdHGK/FHEkEHMoqJU4zDPVsr/YzfCtlLf48NOeAUaMWIQoPCC0aD5Ks9RyQsiWyQXQmAHMiQboCHfrofpTCHCPDdgLdHCjjdGFLgAj3FgpKrHmsd3FLdAQ4rdH3HZAlwIbdG3ZM+YGFRIb1Zgw89wQwkn4x4kn6drEmFRIZPFw/dNYowxoJDrLGGp4l4FR4roFT+TPG54skKIwsCwpQYmGo/WdapBSb5x4gVbUw+oJx+N74N4rNo3faPETAy76drYVa54qWJPfHiwkw0loSWOEhh+bn6drEH654p1pS/dNbqwpr4prZWG54zvzyw0cqZ4jYLaWNdZKwrpbcwrPzT4/qF8KYqEeoQtbY/Rizerbn7H4wn4H42EEJ44UH+QtvFczDyFt4hH62/ESzL4+2E9oBNYc/b4LZ412Hd41ELxITKZkgsmLnuS4HqWTtZY/OyzP4hyG4w+hRChLGEy/S4Ll4quEb4o6JbrUyGb4k1qo/HfGJKaAnn4vNpH4yUECWb1bdwtvEerJWorRXvFpIisYZI3k4ahQXir4bUJwDNza9tetq5KSaz0Eo+KVtIawpAE+B6hBHQz9KGpcEybEtXYSLEqUTJehJNAcQbKQs8Ntx8gPeEQpSgDIuMQn5VcoLIuBmTiExVwA+GdzRQfKorNINwqOPyRP9YVzPMDgzCEmRrhuS0zLgYwmQuJUjfw4QmDKHuT3gf+HaE31x2HKtzqEkZyJyOA5KEuobuE6BHMyWwkKE7KQF7RUZGgRvSKqbxqIKfwlqEr0BSE4IkBEh6rvDYBx4ItxQnybvT3IPQl2EHsI8GY2xEJOgZj2baqmSJp4ZEreB2SPxLJEzQlL/BqoOuFQn5VWFQaE3QlztTpq5EowkkyaxSbyMwlIdbfBBuLhZxxEmQNEuwlZgdSQW0dQY4jVQlLtFokRElRKigK+SMGf+GPIRxptyUIDMInVHpuKwnKdFsAdKVtipEsRJDE1olvw6RI5E9+x5EryJxgQol1Ey1ChNZRwjE5SLF2KxwxEqSo0gUWSGKERqJdK/qNEnqImwXon/JXYnvEidwbEpzo2wF4lDyAxrBdbOAPEtxyLEqIlWOewmuRJLhTE/9AzE9IlwOdBDAIvYnLE7wleRLMDrExSj7wLYl5KEmTBVOZL/4YpQEYaRGzEnsLMwa8CZuM4knyCIleRa4nhEsol3E+0ApjCDDhI/4kxuYkmRub4nRjOQwhuLklmKO/RtOZ4kaEtEmJdJkkxOd1rIk9W5SEqEmHrF1FUEpFJHRNiKEpEQ4vRRUmp3MArfNP3EiMV6IURL1BvNc6KGja5Rd5TUkSneDFlDDMIqo8HQZcS0Z0uMcLm8IMK7YJSrWkrsJQRSBHWTLsIxhVxHukmEa4RRBE5wJAw5IVML5URsJ5hDeGWHXMKZhNLRF4IsIphX+E/4eOYJhXcKJ2EMaG0WREPEdUaOkiML2k0BySGVMLOk30LLhOzT5k/sKjhGSr5kvGC2k1BHekvGA52VhGUeampzhabA8POuAT6RaBkjOzQicYEY6PTcIrkc5C+kqf4QwXmoCoqf78wC8L92RREsFV1BARL0njWCsK/hI/bJku0bPhRMIv4U9iJY5cm7hBfAdQ4GBH7LcYDQhdCxhKRi7QNdA5Vcsn66ZpGe7M8naaAhSV/NQxpjJCKbhPcltmXlCPVXsnMoA8J1kwcnzoRslFVEbgRwV0me7YMkPIQXg3ku5A8NZ2rXVF+rxzKd7XVLckZoDqQ3kp8mDwP5jtk7bRHkweq9OJslnkytL+hbClMjXA7oUosaZIQ8kmUZaA53XclDQHdDkUyRGAnSMbEUr0mzQEMYroV8nxkisI4Uu0mTkleqYU38mcUr0YoUhKpQUuckgUs6qLk43BqwDcI6IgsYNgN9G0RDZSEMKQ6fxJHwDk8fTFI7L6Q1I8ByUuGi8MTiKt2Hh4n2FUnwvAGGrwoQnWRLmyzsF3QldBZHY7JBZyRFSIY2cynVEuylaFS1gWUjSKrFFymOU8brgeIKIk40KKjeBVJNEmbz7tCSBMGdom/YLTyYFawkCqKjoQmOgDQkrykGeHgCZ6QGRuUk7wSRKyryRF7DpUhFw8eYyIOUo+GqPZGz5UpKrywKymdQYqnaVOKKdYDylHwh7DyYCSBD6KSo5ROHAyQcfSEJAqJ2YGSCz6YDolRGooBUnqIVReIo+UhqLNU9sA1U+BGRbeqnYgfKqtRNKniwOyRjRZrz9UuA7zRbyl2EXYmrUxKlr0OOKLUoMCxU/+HzkL4rIQbLYgMLBEJU/qLFUpaLZgTTrjU3qp1U0bC3Ug1yjU7HbTQOySJLG9rLU0yTPiC9qtUzYmRLbBSDbRTDcI+vDYKbLb24ENzfUrHDZbOeaRuduDFFC6nCQcJHbRLWwVUg1xVUmranU+qrXU9SAnU8Awf7Drx3WA7h9mR8AGuTqI2gMGnf6AlzpKcaIr4Pxyk0zEog7eLD8I7YQ3U1LDA09Gkg7OcDMI5GktUnSDc0+sxDUtmlDVD1g/UoGDIk/6kzRWmnhfdJHEleUmHRbaDG7OmwGUgQ5qk8qnmNOXb6ghnI6ktWn8jZWlnkbWkS7deQa0l35GUmNFCEiLowZPTrRdS2kPSUzpg2Yv76de2m3/aDpNRbbHOdHyI3Y9EkedLmzHY9om8eE9ocQC7EnYqd6lRT2lXEwrE0KQOl3tX0hfSQOmMyC2mB02LrW0wOnfYwTqq2P7Fp0sGyodBOlQdO2mdQXOnoEJqJQ4+DpaRWHHIdLqKA4l9pg2DnHJ04FrWdaunFdAjoC4F24F/UjqOQF24syFToC2YnFeRSrx3SDuk0dL/LI2C2GJdNjr/WenGJdYhJe2FunKyBOl10uelWdOLod4VXESdLWx842kksNA2yJlXumoefulS4irrGRfekadHGnb0jhL2dBum2053AX02SR50l251zTOmdQXmHaVKumP0xekx0u7BV3JZKr0/6xUQmbHsgKGnkQzLptdQa6d05XI401/5iIaSKAMx2mv05nHJ08rq306rowMwa7C4yBnN0g/4kdVpLt03f6woCyI4M3jDoMtzqtdXUqv01Bl901WxIM2jovyT+mPJIKokMwa5wM1zwK2aBl7tGyKnJW3HAAlOkYA5dgN3bAGa06AGjdZG6+4hAHTdLhlak9qhoAoRkTdO3G8M+AGGUpfpm0oGFc7PaBJ+IvErQe4Ip4qyHLfH3yNfQqbqMjr6BQoOHQw+iGhwtoF0w4b41KUb7P6cb4p6SGFiw6GECBeb5rfUzFmMhKzejBb4B+P75qMwH5R4tsJ147b5aM1AkxNc74MwuXwnffKF/fLvG26A4GBQ+xlBMtAYffPH7uM5uRj45JnvWZTHuwzxly/OfGxQ1n7q+Rn6htQmEsJQNozSC6Bb4zLENwm4IZ+UAndKVJm4/O3z1M+KE1M9/Fn9Spkv44JnIgu/H66G2EkhNGDkBa/G5MiPRwhJhoC/L/G26H/Fi+O75ew/OGS/XpmS/CqywRBAlzMjX6povplQEiJk6tZyE2MtuEVw7TQIE0pkWMpzDy/KprNw3kIVM4UHOQ5plHlTnyNfVZm3MpqFXMwgkqM8saqhN5auo9tpsEDkCd4IKEcgLUFIPKXQ/M4iTAvFiKfM4XSz9Gbym7D+q1EBqhqwOaB1IiPFMYOKqT7G1SSErBF3QKdTmUmQljsUGwQpYuxHwwphRPHgAyIeBGFwadJEsmalEwYZ7cNBam1wFmwUpI0ADUhdAD2OlJJacwmutZlm0RawlomOlkHcFnA9uem4SOCFKcZKtw+SemxCsgxAhVAln+YcVkyEsUw8sqIlnU9JwUqVFlJVCspS2XFnEs3qrosrJ7ksrBFLQXsAcpPBHVZPGx0pbbKlVe1Aw2KbqeAYDocmG2z0sowmRMGGx8pQNzrVLbQXPXVnYHOtwRpPFmes0lnPIZ1mEoatx5wJRz2snqJhgTezSqFRC7E8NmCs3OTyOINneOCFJX0YGkoICMAas/Koxs21DpsyVzTremzOszVkRInOD7YfNkZs+3hlOIVmmYdxH1IO1m8s/+F7+HFkHcVwwdVe2TqsxtnMIqaZ9OJNl8sg/a5stcAVs5En9+ENlrYeAyjSQdk+gCFJocENy9s55AQpY8CRuDtkLgWdnpkONwtsjFkKsz1lSsmNQqs9A5Fs77BLs8JG9+ctlp3bFC24gVSIadPJ5I7Gpns7ABTdCJqqU/hmlIuKbnswfSXsoPFIsZ9l0uZIb/QhRkIs/azFY+CwYEgvTotbAkF6BFrerBrD9IfNaQcur4fbL5K/mOQIvbRoKVrSGyDgCSxIEmpSoc1/Ea/RDnz4vvxPqd4K05YBQm1b/FaBfpCdrFY5wEiUJCvKCzprf9koWZtYTTYDlUcqUHCrCaa2tOqFqAOFDkc78zd4oYJUFAjkitbfJYcmeYjA/FYYGLjkhlL14eWMlbn9LNBDrDJrGWN/EZNbSzL45Tn6WNfFheBTnqtLqGycy4KAc8/oxWEDnic5tAccnjnN4r4b4cuDn2zPoERBfTntAntA6c9PLlIDTmqwJzk0/VTn2c2ixKcmzkUheTkNAgTlvTMzl/45hrGWOqE+5AkKscpcLxIMLlBcyTmWc4JCEcy0ZitfvGaNcyxD4/2D9wpsy5gY36+EgwI30OfYgpXLniM3OhdTYpDG/ZSx5c2eAl2S34CE5R42gqKB9eaxkfkojwiebQbdhDjyIeDRqc8Z9ToeKbz16PTDvqYWoqeF/TgjGlSbeAwb6dflSUeDpkDcnDzTDBjz66Q5GMqUOS0Bd6CoUijxwEVbnNciTybclAyTc4TyNc/rktDCTxyeNKH7ctrySeNzHNcg1RiIYblfBE1QaeRsED6T0m6eOWyieb0Z/hSj4meLvTXcnAgZebyG1kmzzjcvfJAhRzyxeZhqDheojlIjzyhQwdRYgS7xsGBNC7qeHm+eRHktQea7ATCLxoDQskNeGLwdw7rkJeWzz9NJWq1qdLyWeEbm+qW7mt6c7nf4Qrw6+EnnvqYbyJnRbk9c6rzvctbmtqRrwdeT/QHBDHk73Kpq5kwLzzaGryOQyVFDeDSjM8gcKzpSbxPc2xoSEO7nbctAjHeQ/RS8tzwbjbnlS+UHk8EMrwV6ScKLqU7kA80bnCXEjxONc9TBjDuGq86YjTctAZ+Ybzy/jGHlJjNpA8EZGAW80Mm+4byYR4UAw0853lY85/Tnci6FKed9kiIX7IEUUxKfAEPnFc3HgNZT4AQoQ1hbQHYRTQK3au/RRmR45RmAcyAkaNEDn1ffOGJ4txmJ4lnxZ82b5hNJoGQw5DlLDKxldNToEV8iKaMhSGH946oICBRLlbfFnwZ4/SFp4gPxp4rGRl6IoKcQhjn1BLvnerN7776FvH5Qwfn5QzvF2+Jvn3feKH18ofnpc6YKT8wWETQ0fE5QqfGZYz/FFwt/E7BPNARTfpmEwlzmI/DwadMzLHp8vfGyDYn4TQ0/EF8wWHxQrPnDMjhpX4umFdQx/EJwg/kv8juHP4gZlb8+/mH9Dfkz892Et8z2HZw5Xyl4s5kz+VjlE/dvwLLCOEbNPkY5TOtFUDSGT9w0FnfMoCAiaH2RQsgFloCl5xqUi2QoCoUhfTELbJyTAW/pQgU4C6Lam039mCldgFu0fRZJo+zAkAkQG0Ciw4yxeHD6LagGCTSfwcvMVBcA0bxgYvl4KLV7CuHLnYSYNCzyLRgGyTZ+x8A3SZf2QQEMCyhCkA8CYpHWuLMCpQFSA6iYpHegW5LX3zo7TgXGxMbBovNQGcTCfTzrO3BJLAxaqCkxwGAywV15YwHaC6qaFYI16WAw6lGvVgXGCiuClLZzzETCpZB0vSCiTNVZbFfwULLb3BAFIgGKTX/IJrb3CAlFPGa4PwoBCzrwJYyJxdLZLxlWGIUKYNAp6rN2i+ArQVMTCvkSYJAp+A/IW+AsmL04JUFyk4FkgYk2S65bWYDAKDERo1bDG0w+59jX9GLAaoUQYnWYtC2GQNCwDFNCrcSgZDGBu3QRBPQlIY1jYRAL1bk6+bAt7A5OdhfOOO7TC8EjjCz6G7MdIAAAIUaAS9BMAKAGKArACgAKABqAfAE2FMIHKg+OMG84uzjg6QH4AuQEYkWwAOFWwp2FewqOFegD0AJ9wkAUQD0AAAFoPsIwBXhYwAPhV8LsAO8KfAD8LrgCfdARZEBfAL4Aw8cuMbEDhCazNIgm2TGp24DsVzbgiLpVJ1R3zAjdl2XPBwXJV0y+rfdlUZyhSaT2YlnDckE2StdxiEhlCRUO4fjPiKsRWiKvQDSL6EqSKGAv9AqYA1VpVExx+wAdAOiX2yGQq4VuRcmz2MC5ISmnb1uRZOyywKjIVIHcR7iVOojglKLyMjslhRaZY7iJ9VHJC5JGusD1UOGfppWZyKiwJiLmRQuhWRfqKqRQyK6QHCLKRXZZbVlKKpSSch3ohOBzRQSK22KJJcRYRBaRaSKiWYyKLRaUlyglyL3oOccsgvyKaiakgUoMqLySRI56gvZ0ezMklGkhGK/DGKLHdFugQxRD1uRXOyvkgGL2MtyKfWbhyuRTaLbwM6KCIA6K6RfUEXRVGK1iTElFoAWLEEOTRaLBWKaRaSTFQrdA/CtyKMSTElKGud4qxS2LkZtopYTNyLjiQ2KvEnqKbOJUlW/rFpjRXZYRxcokqxamLgkBOKeir2L+cAW0rEhmLoxTEkWEtaKyxcjMk0KCZ5xWU5R5DmKHql19VEvKKvRdWhjLs2LeGMjMzjBMsxxaUkrxYqjzxTGKNUMSLCSRSCnxRSLYchEFvLFyKSRRIklnPyKfxVklt8KSYtRaDY9FNuLvLHwk7xW2YpxbmB3gt2BSxVmKCguAVpRQyzegrcVkxaUhrWZCg5Rf9oHbgckcJTRAVRR9BzjuhLRRYgtQJXyKMxQBLSkrqLHNDeLMrJ0Y3Rf9NTRXiKmRRIl4JWyLA3MiF6vGTpuRb+BJCEhLAxeFlBjqRLC+tyLmFrmVRJbxkdxYqFKJZqKziQklPilxMUxbBKvkhxKVJZUlqRWaKKRY6LcAnCQ+LBpLaAvpLlJfWKDBj6LBxRuKl9MOyexSuK0oWI1BnDJKC2h6LtJSBKmGsZLRxdRK9dMYhnxbpKvJdskHJeRKIgs5K8RRqgv4auQupg0gKRcKymuhFLWjNBIsJcKESxRSKYMpM17JSEZTBKyyHBt5KKRTKLW9O5LJxQ+LSAuE1rxbZLvIZvSOQDWY2JW2xJoQ0YVRWFKHBm4pPtK5KH+Vl0LTPRLZwk2LPJQM1vSh2KLxd5C5xaVL69ON58QJVKTxWyj/xS+KxDEuLNRYFLEeSKKxJV1LmicBLFpdc4LwOaKPxTbpEFspKupW+L2pc1JNfO+LtRcHChBjn06pZHYz0IxKhxbQF1bnWL0if01x4kppCpWlD9pe2KnpZRDkwKWK+xQYMtpaOKrpSgY/xVRKQSQv4AZTNKlqEo4LpZuBCxTcl76rVLBpTDLSIDWZcxdPNYZdWL8DCWU4paZKe4SxLXRXDKkRZCU3pXbNd6SSBEZZZK7ZjxK5xV1KKYuSKCZfg5apZTKUxPDIVABbhu2Q35IxUzKSwDIF5pdJL1XI0kAHONMdJXSKz1k2LBpULKHQCTLxRaSsTpcJlHJU2t/JelKRZYLkM8gTLR1p9KFxbLLyZaWLpxaAUNRVdp6JZata8jBKWPumL5JXdLXMkmLRRQrKVmsBLLZZsgSpabKd4EeLcJX9Kx4I1LaTHrKGYP/STQFDLIYn6KMJXiwiYrOLnxXISmsoMk9Rby4k/ltABpeuzDcqWKJZYblCjDLKNcgZKFZb7KLZaTLp0b7lE5cmjcTPGKIPhUk6JUjKZNFPTcJeHKSGe28ajERKyPvnLBQM1KMctMhrxZ5KM5bEgBZTcllNE0hvZVUtVpUNomJZ3LhpZwB1pUdLsJn3KfJYLKCvICZ3ZT9LeJbNKMcrtKIJYF8XOpBA8JWXLMkEaLC5aaosCrnLfPgvLVZYJ9wrKWLOxZtBJ5VHKD5dhMx6WF4qxV9L84MzK1pb1LGksWAz5TXLG5Sex9JLfKq4rKAlZaFLI7AYUP5f7LpeoaKgbC3LIYkUgR5a3LuYshLp5WZk2ZZXKmsi5x0YoAq8YiyKAFbXLQcuVLPTGdKMInBlkRVVKU4j5gaZIdK23sFLXRU/KZIHTKTxbsVwJb/Lmig/Kg5fVKsSlArnZXQq4xZjKsStQrX5XdINituKFZSQqmpcwq9ZJdKDxXDg7HI9LjBKPZtisIqwZfsVX4ghk9ZXXgYOjXLC5QSkDZTIq2UkaLsFeiiN5WorYZOPK/Raqjh5VWL+JRFJ65RNpuRaJk6UXIr95X1LsZOYqqxXHLepCsA7ZVrKXQZwro5VorrZS4rCwfaL8FVd5WFTIrcXH7LfJQlJnxRtKUcCvKkFZ/KMIpfQlZQwqUsETK2pbwrc0hvKRZRm8LFXfL4cKGL7ZQFhx5dEq7cJnKRFbbhqKs3L4pRM5IlaJi2Fdh0kpTIrjlKvL05QnIlFZorBttYqe5QpJuFW7KdFdZT+FQYqSbEIrTpWGL3ImlLCJbwqwaZEYMpXSMhlQdKl5QHT+lUHLiJa6A5tp1LKFe0qaRY3LBtp7LP+jIrRzGHKFlSDs9FdArnPIjJClaXKT2hjtx5e8S6RptsmFRkqQdvQrhJVtSfFUGKpqfWRGZbfcuJdsrtxfUqNldGBdlbMqrRSXKtlSlsTlWQq0zFAqIFWrSuZdMqQ7ECq4xY3LIVRiLNFTmYdZT2Y4Vd2LMTM8q6cDmZYlaWLOlarY2xVNIqxYKLk7I2LHpQpLkbLWK1shMr4YGmYKlXPK0VYSrTpSCqczBB10pdCrZUcb54FVggczBHS6JfSrppbrLqVbMrU5QtL09vQy1xb8rcpRSqRVQMqBFQSq+BmnLbFfCrkJYMrQ5QXLLleiqolajL+om/t8ZdEqczFgzpZXkqFbKSryKlCKpsQ0jBrlaAI/OMdX6eaqY/My9aQNmZOMG74HDqmZH4Y6qYLPar0EI6qHMVarJCKs4dkO6rMpbgF1WM3KO6bblEfCcYXbtaqF8lPlvVWL4Udja8I1TLlRtv4ME1bGqbNu6rI1YQVCjGaqfVRNtX6UdKF8okYXbvVK98kJyhtEWrV0gY4/VTGrYCvFznVR6qa1VmqVVGzAajGaqh0pbBG1fppJslJzaTC7cERRjlJgT0UvbgQVyEHxZA7nKlyEA0YXboGYi4lUDHNFOrICgT4W1Q6qG1f2AU1TWrC1YQwesp5yQdFOqQCo69WVWOqy4iVtg1Xgxv8rG8Dpb2qW8qOtIjINcZlfNBj1csgrVW2qBChnkzVfTBt1Vdps1TPkGVOmr/cpctl6RmrX1i/K11YTBC1S6rw8mBqgYCWtLVUWqt0rzAvVeWrYstfpsIPljA6aml5ELC8ahW6i0NTLtmHsIVGSnnBGxiIgZIDwU57pIh86URrJ8vhqp+JCK+AG5B+AIgBLAOCAUQAQA9hbUAQAA0B3AP3hk+VQKJoO0iSQqK1DHkxCugUJrcCRsxGZTXz4LLBR+kd1NmoDz0Mwm3ix3rk9AKs1BUjIdCeLEU9TsvByKQsoNWUdpqkOW7hoBhgS28RR9VBtgSTNZ0YFNRGKvHttCPLNY9tkWNDtOUE48UULJ1ObrAgBvXjuCipBhDHKhdNUNpJoavj1qVprECd+g+UbZrU0HJrQUZChItRgNt8TTBXCgVDOkDFrdBtfjrNQlrUtdntWRUFDvgqpqZUd4DBNSijLvslqKUbcFcte9k4tec85MoQS0tdsjqtclqqtX4D4WnM9TGRZq8UamiatcD0rIffivHhASnRG1rlptzC/ClNBoOfs8GtTgFutQlqUuhNqcwGs8vIbnilNalDLkJlqAFdBktfmVqPJhugRLMVrCMjlrjnrNrStcc8mMgdqwBjNr+hTFZpNcpkBtcSAjtedrcKN5rOYcXibtdJzDtWdrntZk8IJrnVSCfZrOtZ3FwpfVr3UQAT3Hv48/SoqE+tcSjVYdNqftflrvtXY91ymDqy+vJiTOUtQTkSuUCtRgNZSjDqwshxYgIFc8PysWK+LHZiN7pFKaymN94tdsivSuFLboF49oKrd9s4DQMMdaFr3skqs0dTgMarNtr4FuWLGdRtqadW3jznq1k8pn5rsstBpj0F5roBjzqmtUANXMcjN4dTMjn0ZDq7HszrMddMLouc5rtJfptCKuzrs+jFKLtboMtdaUkn+icin/INqxZetlotS9qW/PNr5NT5g1tebqoqLUhRWmprpArmVNNY+B1suNqGYaCZEHBrrDNYwNjoRLq7etIMzsfC1LNdbqvtWTrOtb2sOtXY9olsEgZdSEMskEDrVBvX5uYUYNk9YLro9dDqgta7rkXnyh1tSE9I9ezrQ9RSD/td4Mg9YXqWQopq1NQyEAOf/gstdXr6OXtq0fDhY89Whk1popriBlTN2dbnFK9XyjC4rHra9Stq+9Tfihtd3rg9XijO9eHq7Hm3qo9a3q4fnHq0fBhYDdeAM0ZlBZ3+gyih9Q3iMIC5B4QPwBigJQTcASBkLoESpgWohlHVLFF5NRWiKVG7FwBgvJB0AZVOpA1qFVCfroNnfqk2qBkn9RkUN0MfrPYaBlt1M/rDVHqp0yhxkOVGzDLtSi8YXJqgRMkSpeYc5kzVEAabDEap4DX6o02ai13URJtEXE49U1MupbOu6i8XkHtLNQmoCkIS5ATPfVBVBbC0DUGpTYe6j91Eiy+UV6o9VM/rwJtKpGDepchRbnDWsvWpwXO70t5t/qMZO6jE3sQbSTFvN21H51+DdAbFfu6jODTG1JDcypUDfJkQDT/qdNv6oD/sDkaDWy1phQb5Yompq4abSlftZ6YL/GKo9DYOZuNZQKlDgLlzlmdVttcw91ETrr/HEmihDr7kasR/DbDfrL8wv9qGYIgcXte6tzJLHtcMnNpjNS7sirPpqS9vAMorMEa27KINg1vOFE9UhZ8lrPsgrNfoS9idrgeoBZ8ZLHtkjWZNHNWQdVdWpNXNRHt3NXJNqYREbNLEUbV9mVY8jfnss9V4UsjctUW9fBq0jVYbEjW3ZRtQ/AF4uka3AerDmjTz0OCjEildT0aEqstrEUA/AZYr4afemykvqlYax8V0bqLM0tRjclZOjcfs/TGZZrqn0bCCdMbrNGsbZ9oCUWtYvsgrKmi27BkbVQGJCDjW4CHIbsbf8gJDN9h/09JpcaqdO4aOpE/l2jR+MptScaHwKyBNoS/JS7kpq/NGjI99qyLyrBlI5jXlYqyp4bvjS8bfDd0aI2iXswTXqsnjadrorI9UXDfFZ4pKXcPQFCbEHu9qHtLvtrtddo0jUib0TaibjLgV5ATX0a9DdCbujWSbF9oCUQdf1p59dXEBjZPrStHEbSTaDF4jb/kVyhEa4hRyaITYhN5VnCaUjXyacdQd1mTc7AuJsJcCEbdBIpYsQYkVTqPxhTqKtLKb2MiYszsacoV3j5dVepvs/DRYV/VjybLxoULdTZJc5tc0afejzrAjRMsNxv6F09aVo21XgdEetVsqTT+MpdRX86TXLrXjUqalVm6aBTVTI2TdpLKqI8arDXrq1NDrqnQAb5OTbD0n/GGaxjJBNyTR0VWTcGaQICUKDTWOB7TUCaPJqxlLTVUakwONq27KEaQdKxlQzbabqtE7qS9qZrkzSqafTWpMi9ald+TWZN51jWbEIAQi6TdwFLETEaoIDlVRdaCVvTVaaoID4aXdV4UY9dCafenWarDVWaKtO4aOHG10kzVCUCzXUahih/DBjW1p69Wlp4zQedr9rOa29esbpIKyarDd3rjTZH0dTQubtIAebkdVJNdzRWa2tA4L6zUJA2jX0adAefsKMmpMV9dFUl9XpMnzZ7s19eiUh9W3YTPrd4+ADvq99bLSD9c6YyVHi4vbj+BL9WDY39SBa9ItfqbjfFzILSyFWQLfq16S0VkLT/Sf9anEYZGBaHLKJtsLTZZdVNQyT9fFY0ZDQzZLKVTCGRL0rVOVtw4YvFQLTAbhtIDFSLT1pi1K/TbusgbNQINcbxoGpSotIa2QE9JBrjWhhtGa8zVUFZCDZHTFYefK+LVFFyDZmpSolQbc1KDT2DYCsSLURamDcvS2Lawbk7Epa61BdIZ6eaaaonpEZLd4KuohJaetIm8rVaJaSXghbBLTpbjIrxbJBcnZUDcBMoGRhaOltgzMepZsmLRYUz1AhbL/JLESLaIaduvu4zVYCV1ojxbOQUDEmNkWqdilDF+LTJawrVDT5LekpFLda1/LRHE8LYabcLURadDXdZtLW5aBIHpaZlMarBCcBaLDeccrDWVbIUEibY8b/1m5U4apNV4b88e4bEjSzrYjQnqudf4az8ZmaPzLtrczZkbL8ZEbiLLnqCjYX1vDeKU6TS1a+jeFrCylNaQtQ+a2tBUbRyq2aGYIvqfdehZfNYk8wjXPrurR7LQuR1b8LIZyvDZNbG9ZHKs0H0a4tS0b+jTWLGTfxY0OQPqhjVtBPzLObxjRIlJjUVqvDWfyHdfMb0CVUakLY1rVjf9aTrXVqRrV4UWtWPq1slFAnrTdbm0SrrDjTJpcCfNajjQNqXzXNpbjUtqgbRXqZ9Z5oobRkb3jXNqRNQ5ZdofUEVBm1pFIX9r9rYvEttV4aptSzq8bQdqYTcdqDZQibU0PiartUyAHtLdrMTZHFKOWibJ8dTa+be9qUdL4L5daVpAdSdayTf7rRrTSb1pnSaIdVjbgJu1a4bfDzWtRDbUdSjbStLgTLrQzqlbQzr0coaaVNaKaGeoT9JTYZYIKoqavTQATzbWZNxdSbbBigzqtTQYVhrd8a5da1bTunihZzeLq+zdaakdX1bvbSLq1rad0y9SDaLCkTaXTYDadbV1aI7djqcjWIAQzf1MAzZjaVzYGbjdVJMjdSja8embrvjUbqVzaOb29XZA7dbqUvrXlZizcTairOAJ47Zta8zeXaEKh2aszUjrSzZL0g7YjaEzTbqlbQXrobQObwbZWbM9Q3aAcirrBrWnrK7bWbM9XzqiIE7ahzcz8RzcLbabfr0g7d8bSgjXaKbXOaa9STbZwGWgVzXeae9XlZp9TubHLK7a4+u1aHbRsVhravbdisNbrjXNpR9XSaJ9Urad7dDbN7V3aLzdt8U7a+bn7R+aQjMfaNNYjSwIX+bd9fvqzSQ0joLVmyiLRBbz9YhNQHbBbUbfBb79Sbr5VKqoQHdA6oLSqo79URaNVMA6MLQAa90HFUfwJg6BqGA6yLfpduQIi4srOAaaLQ6pxDTokGLQoaNLduogDQpaUDSiFhtOgb7LWhsIDbpYxLTGpArRw7mDV5DStLepwXHwbZLftguDUVZ2LbyptLfQasHapbCHTw6NLeAaJHRRsRHfparLQI6yrMZbeAIIbunLxMoiPgb2TSo6cDbZamjBgbNLA5bpVE5amDfg6aJjlaZ2bxbyluOynLbKA6VHQ7Dllg7nHTZszHYw6oYkGpbHaw6DHbssJRU/TIrd46SWkDFbgdg7Luvw6tysYaiajxqzDXxre9Ooj2dZVagzebqwYd+bfcpJqswi4bMnWnsWjQprNzVCiRTQ7b1NU2Svbbk8Rjd2bmoagcA7SU6iqq2bawhMaY7VCjPDXDbNGg0abretCj9vPqAtYmF6naUba7bk9a4mUa9NQYtFjcFq7YqmaQntNaxzebqmjQaa5MgsaldYlqiDo3qXIQybWndfj6Dllqf+YOa8tUU7WnjKspzYMyntHUblnSHtfrYhkR1leaRuSsbVnZsb6nTsbzzUc8KnR07jjdc6zjU87EMgLE8DkNq0bTGaMBg8b9vNc7wTTDrZtbtDEHgtqPjXdI/jStqybTM7inSCb/ndhkQXas6CTezq0XZPr9tXibzdaAaK/jiaGIYia7tdAMHtRiantbgdsnQSatHnv1KTdc6aXSXq6XcHaAdTPtunRDrPTbDrvAWy7Wsp4bm7Yjqxwurb3UfYaS9YKaOncK69bVjrezYba7nh6bNlMTrRVpspqdcLbVTQq6UzbbabXkxi9zUzrgdkc7XTdq6jTZM6wsimaynVQgMzb7b3UTaaBnefVyzfU6nTSWbLNTq6lndK6HXV2aY7V1kK9QU7gctmavjfJrAzZGbhMhbrfXY6BTdUi6lsvJp4zfb4STbbq2+rs73ssWazTadlq7U10czZ7qE3VghCzdANY3VsagBgXaT2p87w3cwclncOaOnQObzjcSjmzXn96ncbE03TRlK3ZU6y3am6jXcW79XYINrlkc7c7Zua5MhOaSGa263XU26wHAosYXUMa+3c4bVnZvaNXRtqNzUc7LzV3qOXb26vzQO6ZkXO7+XVz4JXTy6p3R06J3Us7R3bm63zSXsL7bPqhne/aaMou7v7Yc0mAP+b/7bE68gfE6ILepbiBje6mLQ1rcLZA6jnoq9b1Q/qlUVhbn9WhbHLYobkHShaYil/rDLb+6CLXvTP9bg6KGWB6ZHa/SJegEhqLReUoDTBa5OrAaXLQB7JHf3SkDe47oPa1ltXpxbMDZ5acDcTkFIqIbCPRjZTLdh64rb60KDXJbzOtQbgrUpaEDelaWDYxaWDSi91LWprwhWFEqDTwagPXwbhDeNEyPfwaw3CJa8UQZb3IgR6OPQLZpDZTk4PRaZ5DYQzufDDkKPQB7rHcdT1DWgFpIs/qJkCh7iBg4s2Gbxtgck+74PWv0XXCgy1ZMVa6uc6YFzOJMQzt35KQFZ7IcnXVPFXdQVYGBsYbu+cXPeX0/DM56LspyBSld57gsmAVWjHdRgbqDkzhmtlIgRddYrj4wtJrC8AvSDBzIBiAnsLjdQct2YzTsl6Bsk8hWQCRq2YkaYJlhF6MMr6YJtMF6esoVZWRf57NoKVZWVeV6zMvKB+IIl64SCF7FFrCZqvbhM7PXCQPPUhMuJsV6ccrSpXCvl6iYuewfjDdhCwom6wKCUQ2vUNAuMoFY+vSBFPMiZQuvbN7MrvmYzTnDc5ls17YUk/lplnl6DuMjAT2lt6ivbOwRLm70SiPV7YvZT03VEpokvSLEtPSbqbsHBMVFpd7gCuBkJkG56nsKt6DCuN60vdd7Avf4MrvSkt6zAjKvvcRlLJmV72vWzEQffyBTvWIQWMhD6hjW96vxjN5CTH96BMmPDH1cj6ksl6pISvD7oJhd6c+sN7NvflQIei17gJgihTvTvhZ4leoVIPj79vPFYODCt6uMoaosfYt64PmVj2xej7GJpMM4fdsAGfRqJnwGT7GvbT6qfWD6KfZqNBQMT6VVKD6WCj1kHbOt688MhlqvEWAycpDdsJurYxfYd6JYo15+bvmdhJhz6spBN6HCFXFh2KSZjsLt6QEACh00Kd6hQHu8AfbSZ2fTJo0hKuAsvWd7HPhaZ+vde9lvd168YnLZFfcL7NoPmJtvc777fZNIyfR172VI97ryCLEw/VGaDzqH7cfa/a9YGmiebDiVBRt284/ZfaayGmj4vXJNsvQB80/dpAaqBLko/ZpogffWj68F57ffS9BOfYRA7fZHKCUPz6esqQ8AFcT6PVLL7yfUrA6bD76pfT7L5vbFo3fRjlFMUF6NvTT6B/b97ufYplmZNAQJvVb6BMhGp+wDX6W/ZiZsfSHFG/Vz6TKJt60BUj6dvW10VrQ9cpzEd7+LGEYQ/TPkYPEL7A/c4DMvVqA2/aAUwvY+az/QdxPvf7IsJrKsprlqAYMdytthEz6veKatWfRVL3Pamrkxq/ar/RVjf8iQVCCvDZ/BvZBAwmb4e/bL09BFvkbfZ/0l/Yf16jHP6DuDr7WfDEVOziIEVjp9pIgTzcdfMpMFvV37qpbDtB/c77gA+F6K/Vz4X/Z77cAloQfkBN7HiLQFqwsb6VwdgGf/Z6ZjsOgGhaM3KkA4QUSxozL/ZEQhQDBJAnkPn6oA4QVRffn6CAx/7PzeQHk+rd6qAwrU6rTn6l9MoHlbtr6C/JhRWA+QGC6m8aS/c/o9A+xl7Pf011A/KAj/ev4O/YH0gAz6xUA+QGAEkZN7A7IHrQE76gAzHYxTaoHx5hf7qvVQgtfTH6xfDBM+fVqAmA/9K/bB45aA8RCHfSDofAzL7F/VQHhvBN6noJyg9Mg2Y+/RXNwA/IMlfQnDFJjN7XRm1CgREN6nvZgECg5QHdsOf4cg0qaUTkL4aooZZQAykHDiuQGEg3/6BYUaN0/Qn7K4Lv7IA5z4ePEuBt9X/bZaf8R6JEFAQoLnQKoGZpmNHFBEoINAGqLRIsTrNYAcpFAxCStYpqJFA4gjzRzPWV8QMhuNTMrRbDLCEUFctDYNA7XQx4l4IdCjsG9PLyavQAcGb/W1p9g7n6bg7qAIkJt6mVL/ljlJt7frDfLjg1zEPg1FY7g+36og/3LG+ucGN/VFZAGCrkHg0CGVcif6iLH8HDYKb4Q7fs8XoGaNP+hPg9shwUwjBYVOEptkGZCd6NCsHkEA6pZYQ+2qTHS/xLYITZA7aPlefXlYkRQHEUoFzdv5VxlJQP8bbSNNAq4kyGAFVDETPuit6Q9zF9Puis/A3DEG/acG9TVKJw8tCGeIGCHw8siHVLIKHIYjXlTbbgM3LkS05TUiQy4li1Xgy2Bv8gDg3PcJcHzWvAdQzSGu1dewNQ3lVJVr16lTYwx54BiG8Q1KGPTLqBTQ2/k8/UzpNoId6fxkSG+8h+N3Q2oB4Q86HQCqr6Q7c/1M1QKH3bpM0eADyGNSsIMww+ab1QLQVWgxYVRQy6HKfQZcrgzH4ow0VbSzJe7YRZNCDoFHAdfArVLRntg+5sw4IOpNBf+uXNiw5aMFYI3MkiBB0IRtvAG/CSB4whBh15g346AFUhMNF/NWw/NKSyXPMD5jWHqalWGl9P2GDaq2xaCQ34K4DwYhQFL4mdqMgmnrPhn9EaZF4G44UiIf0orm6MXaINY9dAXV56nOHAMFuGr1DuhJw3E19wziBloN3oxw76rEIoOH9w6aBqar2G98vmGRwxfB7GJeH7ySzBVw9OMzw7rBOw775ypTWTU4InBkXkTL/wwnApfGuH+0OzIzYMvNFw+8hnVDBjD+jOHKEMzJj6i+HSrHjB7w+OGSw5zBi5phHzkJARQ4Pg5aw2AY4CA4M0IxroLw4hH/7IJipw62HdVe0g7KPdxpBriL6I/OH9w7SB56tRHjw7+GOoZBkq2qs4z5b0gJYA4N1WMeTnmFQsKw07BD4E/NHw/uF3wyeHi5XnMfw92ABIy/oAI2BGDw/BSaYEPNtw2/pYVNpH68FOSgnKBHaI+Ghvw0WHKI6jACMPBHxw7sgxCThHCI9rB/ifpGhEh/knI/PMZIxshbYEQsFLvHMTYGpH9w7/wuKXJHpBvYrK0ZYgVCAFHQowFDrw0xHUFq9Sa5vb4NRRHB4o5LAJI0IZEltZGHI+Jscw51BcI+JsgOMixEo1xi16LmH9wy6YKwsPDkFuBGvRtSBaYO5GDIw+UzI8vMfIxWEMo/3Aio3aMLyC2GwHCslIxl1G35tLUd0G1G3ZspHloO3AoI4YGlSLtBao/pHbwz/B8EOpG5o6vNHZqVHXw0WNoaJuH+I6hFnXJAs8o/ejSYP7Nhw9A4tI/PMyIyMR/I/ItIxWdkJoyZGL7L3BMo9VH5kOicHo7Sp56t3QlIxpGf9OdHjI1tGS0PVR9I9ElAEC4I8FjJHN4MAgbw0RHfFIghA1VNGgYyVHco79HwEF2QVw/uGUklBU7CKxGgI/PVLXJjHHo5vB8cJtGYIzyhAyGQsGw1dGoY5ggbI2DHSENAYjo5NBMwEJG9o0YtIEItGiIx9pzIy+y1Ar/aALW8zF+kQ0FhFmH20DhHsCkxSNKNDHQCm2AnYCU1+4EM5UILWhe5hbA/8nLG1YDiBjw43lqYLNAxw2etj5EWMTaAwgz1qE1rUNXNUo17IOocbIEowSVA6vagGEE05OwLCyLw/XlDIVSQaI8L55Yz+HRA8BTpY27MPY//YbYK9SkEK7HcUPZGhaBrEx6v7GU4vstfY5+ka5rLH20QuhWI7HGo408G9w5WrKENIhVY1dQLcjVDcIA7HXJMOjAahbHVckpD1yC2HE4+ygQuK7Ay4xsgPKp3AJY8rGlnD9GfY+XGaGvPNHY2nHrYz1R+A3bHt4XgtMCnV7KcnPMiFk3G95lzTAI8PH5MgrHn9Pz5HSpLpCoyHHIxuUjMo0Jy39OtxSY8vlAsdjA142oUbyhPRrI2et5FDPGUYyLG7RvlROw+rGt0aPH31fiF/7IpMvZmXG0EDLNO4+fHV5gXHJYMfGxKabYx5vvH45j5Jyw9vH5yvslbZuvG1IZ/HXYLgUV49HGTY4Po+MTVEbY9PGB40PMm49E65afhheMMZHbEHocLDD290E+L5hGbMG3nmEC0E7XGME3GAsE0Qm34q6Ya3nMHCE2pgcE5xUIVuQm/ZJQn1gwQnUE7QniE7gmGE+wmbnPQmWE6glMwwhiSycHUY/ClBAcmJS/EhFhksabAhExEgAmr3AP+kgZhE4QN5EzihyFKZlV9NqkXSm2TOUrIN20rmM84FU1r9NInZwlYhj/GoBRUppyJEyImaYH9kSyXQozEw048YFvI3JY4mEoU6k/JaAoRw0om/JSo5ExkiRJE73pJBmKgRXMkHvUmqk8YESIjJTYn5wKWH/EycgXCPeAaRt4mCgtLsvRkCF+MqSEIqM/Y2XDVlSQqkn5kG/sKMtxKd0kw5Ck1BZaTiOEolChY/2E6kKydLAEKgknWQ4PBZUbllkQsETyCpIYCwFuhOmEFkIkysA4JUUS/E2/J2JYYT7yckmKk3jBxk/+g6MhEnbgCMnE5BBGp0E0nMkzVlYk8knRspylFE7In9ptONQ0gFqdk744kDFYYwQZ4mCyZIBU0Foxak0f0U8LEcwwIknwEErI/sqdN7k80mE0F0mkQe7p7yZEmtjm6oIsLMn3E5L52avijJE9P4R0sCnFEgsSJ9CEm7LEzsrMn0nlk1McKMk4nuAEkdJMDVl0I30gXpo4w7RmUnbk9imxKRWKTtalYE9BWFwYKEbiU/knFE/3pYrJ7NK0W4oQUxsnpwGsntk6lZEjm/orE/olclPhV6U/aV20n0GeY8c0+Y8uMBY4InoMmInSkvQHek9BlpUkVMFoFxT6GL0EJIADwiKfWZVMsKEUvO+TyGqVMkxHRT3bhIl7pn9l/yS8nhQmnA9kyhT3kyanaYOd4z0JSlGEgCVwk/bHUkE2YzU1SpyUxFLDUx8hmxG1MoPuuT7eGqm2pgSofal8BFU3Ygrk3rYspv/gkUx8g5BsKFwCJD7oMsGncyhsco00XZ/U8Vi1Uu3NE0zVNgYFRG/UyGmdoKpkjY26mDGLlkvYJalhpjnBdI7gMKQemmlIcpZ/U58VS05mgG00iRC056nLkExx+MtagY0xtNlU+gY9YzEk8ZOinS0BsxkQkRQS0HLYrMmOmuYBOn68LkmNpubA2KQuIGk6GmMKVqmO0/bwu0wmmW0+yA206mm0JTqnEsSbAZU5SEPU98wMkwUEO3u+T8LtUnHhA6nJ0yJK9ke8gjUKOnCQgOASodbHB03enrU2cTWk5emXU6aAN07KgPU/WmD09eBcsnbU8QDomu/JWnNOS+nZJe7wf01SQiU8z5308blRIqZlmfOgxbI5+nkZlNRsM92m/0+UUTtdagvU2LUHU6BnJJbSoQM3mmqMwWnc04BnkQpYQlyaqHC7atww07hmN02MBh0xhnUkApceM8hnlgtvgOMx5UEM8xmxKfmJoMwnQc05ZHSWFJnqM1WmpRDT9yM0hmGWF8hiM+8gH02BZ8Mxsx/yVknRgryi1IeemV00uDNM9vgQUypnbMfumqM7EQ39NZnkQvRny4+ummMw8A7RsZmYpexmMKTem1Dvxml019Ap03+huM0JS1M9tNhM1Mgrg8pn6zFunJMzEETKKplkExULZRtwslzmQmt2JrNPsHwnAAXtAQYCClzCOgLRFpmDcs0GJMs+8ypEINJks8VnOxq6N6ThlmGeNQn+EOVmis7VmCs8iwREClm6sxmHTDVe6HwT4w6OuAwJzlSQ36nOEc0l68OXv1n4LnTZwPBvRNzhpRVihqVAzjQCjJEAFUiTthwfNbJa4Kuc1pPDZ9vAKQYwq+CB/Ttnxs5+DBs+tm9szM1gwGtmBSLcBjkE7h0RLbg4qOhdboLqqhsy7pBUvyNwPEdmh3jtB92g9mFPgdnE3VdniacYRXiJLZRcNNnrsBChHlQyBwc2Dh2VBLErKMlTg8JDmAaRMg4qb7g68O3hWcBMh79D1468Jdnsc1ed43ktm2hlbhvfWDmkeUedhpC51oc7xg/zlTm5s0hFgLmTngcCPZuMETmZ2gfIFPlSMXsyOc4IazhPs7ngebFt5fs1yk4cxErWc22ZXiLV6XsDDmdcD0HuOrLnXiPjm6+HLnfTLbgeTCTc2BcTm6XN55tPJp0Cc/ecFfeTnDHL9ctc6B1Gc9Th4cOfT1s0g42cz8B9cCLng8PLnROgLmM3pyqecxh9swBe1Hc6rmhc7WAJczo1SqfDm0yJTTVcyDA6OkUhyDGF5XiOHn5PAbncc0Hnxc36Fdc+b6UcweE3PNlgvczUVySNu9rbDLnenDmkagztnFc5nhypR7m2PnQBic8NnnliABz3YBbiaiKmpTgSk/hgFJgEYKlNMFt4U4COc3HMFIpsKu8mnoR0Qwf3n1OHJAu8wykuTjtnyXI9nxYODIwMeBdDRrV1HGMBcF80V0RDLjgqntx19tAtnpkXl1nkprmLaJ8jsukDhD3pDyj8xKyh3oPDLOueBamj/gAab3Vt3u61ViqfC1JL6k3cJ3mh80O8uk5h4BPs6kIZDMMjlT/nV3niS2um7mpGva9D81Z5UJUAW6dTtmt8y28v81p5H4ZMhX8yzoyOh/nc8CAx2OkPnX86J1AC1+9ROh/IwC+bpLOnhQM86bjwZHAWIc9NTAuk9jvSq8QbZvJ5CCx2l/ieJIlSGAX1nrAXT8rnndsBQXv0HTmqhpJ1KC7DmxaWV0sHCtmxXnKMDMK5h0cwIWsC89hPzmK9LSQFhNWSDnbRgDm8C/QX/87p0+86rmGC5l4x8wWkxEL3nK2U7mlqPDmM6qo4EPi8i/BUvnLc2mIjJAIhz0LoWzUZl4fgGazVCHWktC6pI1ZarmIsJwXE5DTdFC4vm18+9hZC8l1rHJDBc8PFhRC4pRVwAlmC3g28q3jaJbqA84m8LhASsygnzaNc40ix/ETeOnGcizyV6SPVnX0tkWu8OkWL6PkXFgMkWOs5F9z0qUWJMHj5LxKkWqi5j4aiyYaf2XE6jsEkQh0tk95iGRBPBAxQLHgQRrsKNlN8EgkICOpRHxHgQKxVHBuzAMWMCEBBkYBjAdcN0Xg0s1Bc4ObAVi5Jhx0m4oK+Ku8AwKukOzMkQ/oDrgmiiAR1i83BNi5wlv0GMXrnEnRTizcXpi0iQ9i10XxwGsW7i48Qti4MX3+rIR+i5MXJCB2ZoWR2lRi3gQQxcwRTPlRk/8HEUE4F8Wei2ncO2H8X83OOl9JZcWwcAcWF0iiX9YA8Xpqg6l4S7PgHi1MWSCHI0r8B4XBwACXMS+bBXi4SXdTDvgvi+SWaYJYQdGpCXGCLPgdoLCXrjESzZi9u8kSwuAEjHvA04A8X2qk0YEjEsW/i50wizPcj8S9cWUmkcZHijCXri0CT/rpyWhQA8WDmusRuGuCWCS/SWLCLnAtS4fg0ijo11MufhaIifgwcP1xNUgdw+iw8WZS1TjeWfcXri9M0ycbOwsCKSWaYD49nSySWtizDBkSx8WfCJMW4S9FBfi18WMCCaXCCAMX6Sy0QjsH5kqjLcVNS9cXqSwUZWS/3Lri3ZVNsEoQXS9aWq0umXPSwqXF8NIQNWHqW+CN95TS4WXNjMdYuiLmWJiA1hV8LQQFSyAVEy+CWoy48WlrktQ6iKu8yS7MRxwKiWmywmWGYzoQIS82X8iOLB+y16W/CLGAjCFsWFqqERRslsRPBJJUDCN0Xuy+GXLrq4RPi8uWTruEQv8PMWpCJa5YiMHhViwwQuyLOX1KFOW7rr9lUS9iXLcoiRJS8sXpS3Klry6KXVS/WXzy1iXKy+sRISHsXSyzuWYiA4Qvy+swUiEEQ3yxNd1QPaXuaoqXvy+UQFGrSdpTBeQSy9cXVCTZAgJE9BrsKtwmiNPAgy9cWcS+EYQK2uXuakKX4btsxAiNu9IsoEZdy7+XMK1eWPyykRsS7blByBsWzSxBhakA+WES1SX0iMcw58PGW2Kz+Wo4HSX1roGWQ4PymL3V1nYRQ29xTEwQOK4WDjS9nAaCB7g8fqQRaS4KkQUPgRkK4akMrJgQcy9yl9Hg/gRy7Kk38A41P8LJWo3aAQJy4jgvAsZWViE7hxpLAQDK0BClIMgQdK/Lg/8MoRsCMLgkCKGWJs0pWUgApXHK1vguCLWX5cKsYNS09BFmgKZpK9wRdUucYJIEYQQq34QVihURXK8iZ+Kwo0PQpFXhIBpXd4BoQgjCgQncMCYoqysQYq+cZIsoyWh3n4R1MnuWCq54RfS38Wu8cpQCy2rgzbplkiK5ZWnjH+A4CFuXVZPbcyqw4Qes2OXni9RXJcLNdMiBWWLs/EZokU1XTK6NWkq9VWudpMQ2y7dmDfM0RvK42KmK3px+iF9nZjKtXhq1/jFqxMWXrRNdxsnNXFK4NXIK38W8fhkQBCLtXvARsQYMcHhtq0yw9i/EXO7vZAmRNhRZarOQGCTiIZvJyJ2ZHocBQBkXgWWWcXq489fqx9WehO7Bvq7v0lMP9WmSEMHGJAGxmJI1RWJCqF2JFMGuJAsB8E/wnhK4InS7Z3pbzg7pD8/0EP8J7UD7d0pf+nKB7iv3YlFD8WuevWcXkaS0uYKNpLilTAlhk6IaQHt7eHGLyLvmQRptMfaZhiC03yHjWT7EooQxSHox4OI4evl6BdDM0UPoq1MWeFLXQcoY5iAiLW9uk5VwRtZq84CAgGAqTW0ijzXqbHzXhgiVgvsnrWkWpYV/elrXCa155NoKrXaYcvhX4PQ5iAtntX4Bw4rwhbX+DKcVPhldMya/71tdJDy0WobWxzmrsTa9zX2FbiIZhhd8n9glo4+gnBiFIMS3a1HXD80sCI67GcNs+kyk67ZtA68LZNikz1Q67TYs60bWU64/IbOCsB8SgXXlbI+wE+sbWqQcHXNoMboJKem0UmsShQvRGN66/tI8YjnXH5HHAR4LrXS62BK5wPnWM6xIp3CmbWF0N0p1XHHXrazit/8HbXT8ociCVjZg6FUMNKFGPXia+LXXtuHhya2LXKa6vJmZX3WA683XC2l3WQ6z3XyXBrXIzr7WL5Box6MqvWrptDd5a7PaXaxfIc4B917a3HpcXKLW5NjmNTkFkUyEADkERgfXIMFbWC6ybYZ8O/XdiiHBV5O3BJAIkgkzvrX1QLvWYG4EpTaxTWhaxA3xYPnSU4uxA4CHwoWQ3HWhHHTXskJbW6FTLB4ZNkhW6zgq0HMYptmBvXQctdmalHA2mekeAUbqkEVCt3W9YJ+FpVt/XNa/ahmkRw2zvKN6JZO2EJFA3h5LrxgVUUI3L62PB66GoXeGzKJyGzuSqgrVHT6z2bulCw32FZXXJttLBzuuo2CG+PWR6+tt2QCAZ5oEXkCa4Cn0G2Bto6wy0E6PF5XMubXAs4fXAGwPXtZHw3yG442kS3jpf690pFy5HWJ61PImWIY3FNoWNFfJsQGPlTEeG2r41vAF7aG0cy/G43V5SMzXvdF43k66tg5Am42BMj7WlFNGWhiAg2p5GcXoG2fb9a1Y33YN8Ut690pOmCQYfzvfY+AmU2aa3DY/wsOsoG3t7am9VJmKgF4Veu3W91q035oNo3biqA3EsPvXMomzWuGxEhulPMVRDF02MsGrXvvEU3bNn0hAm1cE6KP9lQmynoVijU2QKbMNGK3Vo4m2LyC9FHdGa9cQPa6ByGm4LXwG6U2QG3t12my03/G/k3xbK1S5oDWcSm3zNgYAn12m5PoBa9k2iDNXWz64Ahc5GM2sSlzAXC3DNrG4EUDwhmhaItM2iG3XXe9AzXUrpb0noJpyvKwA2aG/rBEseYmlG0MUmG3zNbgO42Aauw3vU5QBe8ks224SQqrmw1BAHJYpbmyE3RG6jsKWwF7AyRHpiW7E2KqiY3FIPi3bNsM3MW8XIksuo2I5NNU8m302+a73ogW3JsFoIJX68wImyhgsZCGzq8LG+m0h63Dh8xN0p04/A3epAdolFJhLfm0T4UiLoo/I4M3sZF7pIbMYJZG3q34m8m1VOGQg8c/vWF2KA28cyc2y61i3mUaaARUWXWnmxyir1A/Wi61nUSZLPg49DKh7W0cjnYGrWrW7ppxmn/X/iUo2CUvvXSkEK3vpJG3rnMq2Q24q2kG02CA277YG66J0vW7PWFjGQ2rFYvXZW6555W4PonW/Ch/a9jJVW6vIo2+C2VW7G3OG6W2IxsA25Wy0i+QPrWBEJy3a22HX/69NoLW/rXO64i2Y2922zW51gunmrW368G289NjYW21zU8SSqj1tjW2+24g3Pm3O2RVhs3awDHoVG4GWueuM0ZWwkgS28DJkYNsEJkJo2owb3BBG2khD26KiOQIsNpVnnXXkfKB8G+hWN25agsG20pl25qj0EOfXVG6NgF5LA2B2223J68I3G22W3R65LX+anXh7wAC2qFK23NW/g3BMMXXVURe3jFDB3PW8e3LFD+JJ21d06VsB3RvDQZeVv+38Xn/XFG+a3s1O23zy2zVsO8Qo0yC62tpKSw127oUQO0R2b5EkVO2/R3fGy+28O54312854yO6kE93PG2ZWtI3MLDu2/82I3MLAs3VUcaAwm5CQrm122GO3G2J6tJ29osUWWIvRQ2xjgJGi8c4TdvHJqQI0WK6Ip36vnodAHpsRVlJDWDOxAkMa4ADS7Zp3ryFSVN4sYh9O6nIrO9DWXoRp2TZGkkyNb21uSIXJ2OC7igQLp3bO5Z2EYNIdBsibI4SKZ2dO6wnXgM52DO6tBDZB52c5OTRHOwaCQ85Z3jiUZ2guyHIUu20XSsxZ3gu5RSYu0hEcu5I0EuwzlYrJ53T9G53ZgJF3FgGV2iu8BjKu0IDnlLrtPO3CRou5l3MiyxE4Bsl22SsnIOuwV2uu2F3ai+21Yuy530iXqEFmFHIRu612KhXV3VO+V2Iu9sJ45K52au5RUSu3F3Cuz7Ihu8g0Mu2KINg4DCmfOjYN3FLz0mfDYIHId2p5AP6IHBTAhbGSCYPHCNTuza0wbjE5Lu87YbRgT0YFEsglfpLVVFE92dfp92UlGyNTW7rSplN92qQb5757H6Ff5L1nEFIjAb/fXW16o93ac5YprbNwpEYJz702qCJdXDa4s9D0Gwe19galNj2DuzVxD5NXZ6nDnY+Akj3zRr1o1W9sIv5dfZ3bJLQBhnd2m7OQi/u9CH2QQudjRqT22zF/WHu/w5we7IoRbBk4+exIozhvt5v5DD34FH7Uv5ND3aDKgpAGqvYuCynoRFNQ4xocAjvkPrYt7BFoalGPDESVcNdFEr3a3Jz3ElCJxBPtfZWexL275bT2E7PN7fXGyMJFID3jRlVglFIdS6RiUpsUOttm7IE5bewkgE6lghLe4g25xCQzTezY5skJL2cHAeE+AvwwTe7dBkQ9Ktavcj3Ne0cz0lMr3aRstsqaBW4+cBwZ3ZDT3IDN7obvYH3ge9Ktju93IC+9EhmezgoT7NKt7e7z3IRsw2y/XCNTcG/CQkDd3fRij3VHNEh2e7z30eeR36zGGMgIBkHC+4jdeewsxKGxd78+0hER+17mMIoAp++xUg5e532HfbH2bTnEpW+4WBRW7zGgLXt2f8J4jJKkz8G2s39uG8sgcbHP2G/iIZY2pB5oqv1R3u+cCcQI+TblDL2brA/ZK/g8B7+07Rb+zfUSG8zZSwiHnybL179++jzD+xzZt+4jdTW+7B5NGMwX+/YT9+8/2zRRLYgGA39oB9kpDW4gid+9kod5IJ9K/lTZLFDZxH+/vg5e0r9HbLeTz+7HbyWugPGGDL3k6sgPrEYW18K/v2C2Hb2CB7VGr+wkQW+sTpAst7pTbDgPVpYf2OB1/26YhIpsfLf3/+yQ244AwOxC3b2aB/AO8B1/WoEE/2iB+m13+6wO7+4j2ItLwOFB2j3ZoLf3T+2OUwBwf2SG73VOBzQd+UIP2G/rIhD+88kdB+Vl1B+gPGB2YOVBxf3ZmPIPj+zw8UB8QPIG0APyB0qRH+2QOUO2n3+tN/52B54PeB08GfB2KBb+6YPhBxl99++EOuYbVHOB8EPslG4P9+5VVK+xoO/BwmgZe+NHrB7oOYh0E4dB1oPYh6oOpBy/hlquAOQhzf20hwgOrpmNFCh0wPfB4oORDI9WDQQ8osAR0TDZK0iNlMzIlu5DVvlB0P3gHqEybEaS+QF0OLZM0P1SSSB7lNjAllM0SqE+F2WIu0PpdJ0OvlEyzeh878ii7MO5Sj8pxhz7JRh16Yth9t3Osx0XusyEIztDWrFS6OkTh4mHUy8mWBSBcPr/Yddjh3MAa1Y6XjQEdgpGIjomnAtn0vO8PWqTOoQRKmkmuh8OB0j/gdkqz5SfdWRbh6CP/PhCOBm4WAjsF8ObVdc5NfOrRrZAYMvCEiOBSOMQmGuUVrrjcPuAMkHoK8Bc3hwiO1S1ykiR2oH/0K8OkWO8OeSwo14R0OHti7rm6Rw34bS6Z8VyNOHhIDiORuKQU93OiPykX05j7PcP7PhI4BR/NcsPAPZj7GIGQhJToL0LH44ZKOlItK3oGYxJ8/qOvoaR8EBKRxCP1QOiOyR3bNTy2QANR48Ol9Ja4qUkyOd/PzcQhOoQxfIGRR0ubtIAhR2dUmBTwZRiwbfCEIi2Qv4yBxukDcEQsymLWlTR4JgHR1SOY/K8gubq6PvR2g3gLlyP3R9iAxUvZhaYJM0g4HKOQhLkQqmgmPORywVxR+HgYxzqPz6rZ7wR4aP+5nDI4R4GP3pRSSM86aPT4UCPECMxCQxwbhbgMDKWwAKlYx/yO7WMqO7ECzZaMjGPVybzL5YNygdcO3B90i3Dwx5bmZiAHCGxxadcR9DLQpSSlsxxWPrsDOO3ixnmY7JOOGRwo0Rx6EG9R32OvKDE1cXE7y3aPWk0oSZlurhV52x4ePXwXyPJmjuPPR5GPW9AAtfRxFtIgymYHh+8PEFoEEnxypD/8DJ9ix2ZD4Q6GOpfL63l0tePoDDvI7x7aPD9Ia2zx+mPMAv8T3Pv2OYbNUhxveCPtAqEGrh5uOdoNDKF2LuPsx/+Pdc1hPmy6hO8R9VKdUdOON8NdKxx4ihqyFSAOmSyP5R/Ok1oabjWx9KOAR8klGxzR5xR0RO2c0Xh2x5ahPh22OuuSuO/i6xPMAhhOrx8COZR+BPzs4SQuEvBPIZciOynKpGF3tSAURyDy7CHz68x+8OxxmWOvxwnNl0tmPBifaLwRwRPcAshHLPjcP8x+EMFJ1pOcdTpOTKNDL1i1x81x8XzymhiOBx1QNCS5uPYDv01VNUCO+tEVL/0DROpJ3ZPNJwqPoDFZPGR6JOAR1TrvPpBPQ9EglgvrxPdeYPQO0o6OBeYxWZUk2PJmsZO0p4BOnGprm2RxoMprm+PvIfhWPcKaPFiwGOqx5ND2CEWOIR3I00xxCO07n2E1J3ImsKwZ9LJ0E4EvU1OI0/OX2mqZP3hw419J71PrEwhXV3qaOwW1lOHdD6reWbyPUVPTYQZr2Okx/akpfP1P+QGv3BUzikeJIInXiHoYYms/RA0hiSdp8KG33lETJmrtOqC8XZJmkqVGp5fRn3vgZLp3tObp9/NrKL8P4RVJOZiDh8Hp1fMMQ1tOPp0Agfx5EqpJyqPTc5LRhRyGx3PmmJQbDDKK0llATx0iQoZ6eFaAqDP7zqx1zpYDPo82K9WEr9OuPlKSLp/mZc8II9kg0iKyC87H+mjyYYx9eU7R8IQv3mYwO4W9PhCw7gqmqTPIi7IrP9ITOO0tGKYmlp2v3vtO0ZXyBGxwJDkZVdOV0HBPcXGDPa4HBOoCC6Prp+LP8OBJ92ZzzOJUpbnHkCA50g19PQO1olKcvNPQO9Z9+5tARX89zPn9Pu9dx3LODZ8JBZZ3TFiIb55XwT29wZaUg/p9xObbBug9fXjPyh6TDOW2jO/Y3jYN0IKPwZ0w1K0o2PgZ7LCR9swXlsm1DpELmOpZ9uPTZ0zmxZ5HPHdp6OXp6HPvTEzOA5+npQpQR8lPL7Op0LWkPZ6OPonEjniZ99K2x5Tn7Zx3CZJGB9eMDbP/8HtOpYUnOrMLIqfp4bPm0i6IQR9MMjx0LOqJ9349ZwM46JywUM8zbAzEjxiCnB4X+5z6qG0QeBGh8l9FcoCobZMFwT+jHy7CMMOTxKYxysTPOL6FPPw+UMPJuwkXl54CpZiVsJjIBvO9h2Z3Ss7ng55+CzSExUXP9vPOL5/sPMa4cORK82jGcSuiD8BXqcKKWoX5+NqLHkqpuVDLic0YHzrJF/OTVMWiLnmejA+VjIuRL0ZA+TNIuRJuoHtThQ0LIHzjpDhR9jIguZcaWjEF+Y9QQRN5eYUvgEsB2jAF5TzqtgQuosGSa1MLTyFnlguiCCJBkF5Gpy4m/hH0eQuHnpfraeWbiObMjze4Wtia0a0R8F1wubudAvOMUedQ4uak20fUQoTThQqrKgvx0gKpOeXAvv3XwuZnvmJa1Dwu0rL14zsW/PK1GTE350Bo24hGASKDmpicbgvxjjgRqF7HyMedLbDF6OpSFwIvPztnFakBAuOpxPgKFyov4eXZXQF95NjUOovKeWZW/52yBAnneigCJgukTjkRXF0lceCIsYcKLvUwl64v18FZWfF4GbiF5ao0+rqUyF6vRdoREvR1L7TDF4hZV6Jovw3s5gvgQc9NLRd5DF+/PmYlbiE0atOdu8ZSx8DSpHVO9igF1ZaH0hjIxuQ48Y9RR4UXg+kHSjSo0nu75uVAs9el2pZhUJ0vtF/Bsonm0vJVM09s1hR4pVPUuZ1JhbNUgMu0HSs90QoHzi1J0uHuSB6tsY35A+Wk9MwKUvqNuxhncbKZA+XUv7Vl9ymDbMuSF5svzsdchKiAs9MwN/gJNh+k/fKGohl5DNxeXi8P0pf4o1Po98/L9cpLZKkpl6GpqF+Mv6HTs863TkROIOsvKeT0vtl5pMHUhCuh1D49QV6J7ll76021Auk/l9HntHf09eBfGpGl+8v+i4Y76QM8vLF5pbzsWGcLl7j1gNOOlF2jeo3l3Cu11Begvl5uoXHQNQWV8jzkrbov8AQ+prsZyD6V0k9s3RN5/HYLigV14638KCuuV+CvrWmEuoVwMuf1MM95V0icl8IiuJ8DLiY9RPOj7sTEYNP5wCKBeRcNFzBF58XxnHCIImcf94NKMyILcEauouGspZAMISJutj4LV9xp/0NaveOAT5iKLfDONEj4WRGW9+u4AC2sE0JsKJEsHV/7JyNGyPXVymxZskRoXV1D4o1zezdV1vOnq7avn2XHyAIimuI18ew01/GuRQARQs12avE15RdtVxI8tjC95A1188XQBmvY6GoVmRGGGQ13GvnWWkC/VyfPQ15auItl6uw122uC15HdFiDBpLu+auRBPavK17oIm0M+y4wCGvq19hRa10OuZeFSQ7V7Z3x1yOvs12OuMixv34zPKpjQHjpllEQoeIFO997Gpo/EkjaNsFk3TlKu5l3ho5912fICHSdgJ6luuzJsxTaaluvTItjaCwAfVUHg1pn1xAcL1zPUIA/evmwj0SfxibRJ9mpplLA5ZzNEVUQN/hbvtMtVLwnVbZPlz04AQaEjg/fnG6nADT1/NpstBeu0N8x8H1xBua83Xn1+wA6VHmSoOtJ4jGKVJNDNLpoeHmRvi/ZLk0dCYOP7B6AKN1GTqyWZoX1zxSvyXjbr10WSWN0ZYR9lEOGN3jaFtPxvCbRhuByQxvD13RueHoWFwtIDootGBSxTUGg+N1P8iEIMUVtFjo3yT1ohN2JucdFNpoXX+TJtF7pqzUBSYQ71oYdHcgxSY1oSN4gjRyWpM4N51pBTlo7mB+euG/pI1fgyNpqzUhTRbYVpoXYRS5tFlpYHMJuCHalorSTxvNtJuvfN69oDtCUPSKU4498wloMB3UoHtCSAUNw5vJLchvHEbxTSbadp4t+ZumrFvmftFJuwiTxAwt3JuPuCdpgt36SBN/bFatGkOvyaVoKdJ79iyYLosdOWTmt5RuNN6VpZN9tpoeTjoidL4jwKeToEdHWSVN7TpFO/xYuBNLoCiPPDPvBwUJt3/8WsWNuoYnNuZdH9AVrL9ksKL79uANOvGdEtuNtwH9pt+VBZt3tupt9tv8rnFM9t7bO1t+OALt0iwV14RvhIq835axf4XdD7o8DN/NZ8Dc2nsevo0yC9vMCrjWK5h9vWhgsSQ5mUGDhlwtR9P2PUia9v4G2v1uqUmUQu/wYgED3paWv9ukdyvpiQNvpQDKuTAubEXD9Cycj7GY9YO1fNQqXQYpDEPAcc/KNe+K220AlHnXOV81z9HdxCDDoY/9HfNYXiWgMd/42L/HjT0DCjvvt4KNh9MDujR/zu6d+DuUDGmRud0QYx5EXpJHoAZRdjDvGd6C3fk81oad204QZlQYpfDHZaDHLvp9Fp234WXpWDIf18d5QhY3tQ2qEHvoEdwgZCSAg4fcmY20d12FclCrDhd0cnpoO8Psd0cnMd+nN6hqiMl84fpdd7mECwETvyd1ru7mgzuJ6KruF7Ky27ZpAsf9DjrOdzLuaRonJ3h+LubHNmHAIz9uV9DbvG689uM95IppdzN4U90Yn5d2zvwEADh1d1HvQ8/vpxAMgIVd0SMo+tXvNd3iNQFMru/d8wYGnNPojdxmSpdzbo3d6lzbd1buuY2e7+gwRvXfo3nTZjy3r2mBPnYLU4V8Lq2YFnDvyhmp5qpWQj89LlNs28kgS9KjAQInc33pZAh/7PflOd3axAuXc3q9085IxsmZI92PVadx82J96TCLMFDNt8OC2YFm1T/hh6wD9ywUnCzy2ImyWO4dwXpF97gFb4cbYI5Ex5C5zZTN9+7x1dMvvS9Gtgjm+DCN95LuYD+vvp9+MjW5n/ICd9d4sm/2M8HPf736zWNDoEpCQxafXEDxmS2a9A2iDyfpVWEVox6rwYrO8+OuTpGMYcNC2HBh8Rw96/ud9L3V3uwZy39wzgP8gwffm5XA0c8mEaDy0HEc3QZ7G+DCe9EsjZ95AewD36IUD1Pu9916AjW8XBkdwWNbdwAtgETXycD4NgKwsSB8243DY9OihdD6bv2D2pCsglof1OBQZVD1nvT9yi3FDxgfD90QZZDwpCMsHvDqmtbpjpbvvyD0jA3954fows43YDz0RNV80LpkyioxgHdCQj27cc4Kduz3F1THnB6xwjw7vOTmEeu18Bi5NTc4RuHlzEjyIgMjykflu7EfmTh9xMj3Z2xU3dvxWw0iLogQUH0oDdyGk2g7F1NMDpbiypbE0u5RzUfFpxc9+/KyrZCYcWOjx44IUn0hx0tOtm5X0elK/Uf2xUKyei/bJISuMfg0r359TKfoZj2fJaTLBoJj6Px/tEhoVVz9dz5bBoAS6MfcVcSoeUvphmj0MeHYIKulbozLhNK2kH0ur3PTBdEnkBsek7IKAKj6LjEqGseroWTjZj17Kaj4ZO1sUxw5j0GkFcb8fPj9MeFcYjJOjywYVog+kfe4CHlj8GlQT70fy8QCfFj9mAMQLOzbcnykl+zcfiQLbkhWYCgUTxYF3VJshYTMCfxQEuzIZV8eh0sJoxA2x1/jySeNRg0e+cLSgLogwHqT0aciDZQYlNMIS5UqSftJbceD0o2KVIBcf/VISm7epSfKIMSpEboRB7V4moyU+xl9jyAVxT7Z7qT3qk8xWom1susfQiRD0YT1Op+T68eaT0Q70k4+r1Ty0mhtNsfUwLGo9fdSeDjzao2UhMspT0QabTxNpRT8I7HkwArBT2mzjTyDpeT2qKDT+cfwT96fVjzRAnj1g7hT4X1cWb/hxT597UT+uoZT8D0ujzo6Yz1do+jwbkIzz8Zhj0ykQz7xliT/qeAz5SAsz/mo5ez0U0z2aePT4mfacsqhzT6yK4z+OyHT67qozxehT1PSGwz7UgKz66e3j3g6Sz7me/T6uRKVAWeUT/Mep1FEkwT3qfpVCwkpj+E0S1C/7TTway7EpqfLu4mptpK4UvT92eDgq0Yqzxo6Vz/4Mkz+WeFz7KePnEyl6Eqmf8T9qe9XDn08z9Z0Gj3uezT4Of4T2OlF2fajCTGueT1ChVKzwieST8+fWz9tA9VPeeTT12f51NefCUNSelJ7yp9OvSfQkP6o1uRyffzw2pIz22e8xTufYz6+fsz06cbXlqeST0Kghz98eRz/ahVz7BesL3D3Cz1BfDItaG3T4qAZsTBewLww6Hj52exsWqLjbr6fPz6470zDee6x2hfcIA+fjEMel4Rexfbz6eBsor2Oaj09ODWXRfCz0efWL1RfyTxyojUIeejUgayTaKueyz3ef/E0ymlTxSesbiKf+zySf1yAKfxz+C5xL1Oe8xdshQL1aeeHQWfqL0BeTL/xe6z011VHZ0eOLzo7qbuceFL7xfDL2MfLzwazybt04zz1pe1j6JeiHWpfQz25e8xWOxFz05f51Ptp5L6fkdHdvCuJlZfsRd5Y/j+ZeIDQ2Y5T6/qlL2Tp9Lx47kLxaZ1T8FfZTxpe/L16AEva0fsT48Z9TFif11N/4gg2efAGLOfhz6G5ar5heoDrv71T971bT4bQzT5dQiT5AY79XjQiwE6e92b1fHNEuf51J1fMTEGe8Ha1fHT5QZmz+GzuL4aObIPVfYRwJfkz3+ByQ0WeDWUFIiT75eORWxeTT9teXJKZeBLyCgXJLqcQjLISt0tW4Hu5BAJ2ablLr257Gj1Oot/KmfCL09e1T3OeiDUO5ar4EhGTxz5IL5sgdr6dfAz/ledr4dfUL0Q6XCM1edL5texr+1eNr9jBWIMNfpVEcExzxRfSLwEE/r/uO92W5p7r+9edRY8Jnr+OdmIOqLyL8qedr+QjMz1DeTz8Jkwb0jfxeIM4ab49IMLyepcRJWfYb3mKCpG1fCb/phDJF1ehUkQbapLzfMb8zfczI6e+Rv6oWbx+eXJ/Oo4TwBfEb6jIUb0hO8HejfTz9NfdSsKL7r+Vf6zwyFpL7RONHdre1T6FeybxreZL3mLlb9Tf9r8jf6bxbemL7LfAr7TfnzpKfDb2ZJbT3Zfx2QLexr5rfrL+7ePJk2e1bxzfRbwxe8HRLehjXLeZb86jB9wKmqlynz4zHylFb3BeCQ5SAH0vNfsz5bPgeknf1WTiGfjJCfLcqeo3PQ+ldbyepqoHnf1HNufjQ2tkH0oJf476nertJ0uKTxP6uJrXeCT1X7E7wPkm7xafE0nXeE70jZ/rz2frQ4ml2Uj2pXCoul5T5nfy7zpJl1KPey+halW0huoh78bo+Tz975BrHeCCraoGzMve9VCv7Y7VEo6ry8Hy705Vy1Ij7HfdvfGr6ng/DB3fJL2X6VIIulF8C0lyQ1qkq0kKoJllqkuTz8GRpd3fGr977HNOfep1P3Oz77VIPHdKGW7wugzT6UhJ/d3fjL9lE+77w5lDeaG074w311GHOh76xgor4veLTBXfkz6A+G7/XQmUkXZPtI3ef75ff/tPg/WL/6Ht75XesL62ZeMug/yzwvJWRfnfj0qJFCTJCfsTwKpWVdPf/VKw+PHMPe79Yw+htP3erz7zOAFYmknz4V7Xdd/eSH1VPj7xSeag/4NiHwVeBA/qOpHxyoFfV/fW71OoVH4KBr74yeCWE/fMG4mofgLv7n79gbDg/KAgj30LOzpPdDV6j4LH7qT8KLkfzHyuC2InY/RCtnpWdEmEsvnTQxtzY/ASxN0jzPphsKH2v7H4OI/H0KQfH2eY1hE4+PH0hQo77xrWQJhoJ/CF2ebr68z8mQNkYF4D81T4mu+GmbEnw1CddO2LiLKQU1lEuDf/R7LF8Kvp2QLJYF7NwMt4IQQH4MWqToVk+5tFTqj+cRgnHJBGABnIYPHBwVLcszvywqqA4I5gFXTCN7+n7rAEn9iA4JiM+TC8/pZ2FZARn/U+vphU+fzHGwFn7U/Sn1ALDCUhZp1Tr5zKRM/4NVWl9d8M+9n2f1aWhddNnyAUIphtAiLHJr1n2fp0SkK0/JdvotHSOpz/GY8cwpM/Tcr0/0Su0+NGhjv1oCM+sJds+PVUtfI5fs/Un7JYmnsc+an9ZpGDDc/BgFo6ZWqU0o9Bsbe+C8+8+EqaIXxY07EUcHTcbAKoX0pY8+A1CkX/i+M1RonAwkjbSDNwVKJoevr+Z0+AL5B8Dcp8+P7X8wGX0M+/LDvIhfDs/qtL63OfDM/QbfWqrJXi+kbRKz8DETTVnzi/+mry+kbQmKxDJy+iLGPPSAqy+UQ/K+7JUC/RrYLA7jxc+/n/DbW0oy+d19OMRAq8/4X/y+Hn3C/JLdy+F/KIm+n3OjABQno5X52rQDCc/V+9zGhK0v1R90Rv1i5cEB8lq/ALEHrEZEeM4n9jBxSl6+rn4G+RkwWBvX7vBZgs7AI3yFxU0Bw5qjVSoCQgyYrXx7Ks0BBy3n9hY0387hDnx7LzLDpJrLps+YrMcZhA/hZ+kH6+IA600g36ih/X7dak3xlgY31zLhQtwB1oORZGVUmn630RZNVWxno352+pFe2/90tVpaVTFLeHOHBt4mWh6jOXByLFFHgkMm+vn7vGULPG+Rn2LyPMz2+eIHgkFgqu+Rn5yqI01VAvCojZSCbO+P7b0k43wZGnn7G/mph6xy4CM/UKR6h834UUi7/kFg32u/z37e+O3xBMGuVG/w33a+aJZu/OdHChF35zo8UIe+9XxeSd36a/8X6grhQgM5H1cJYD3+OclTVPOnU8A+5JktKYkrWcpJjdZ6pm6oxX0CAm35c+9XyKiI082+7X38MJU9h/wXzKq1Duh+9JhWoeLAVJTn8po5UHGd0X9jKoPyfAYP7R/3gum+z342+tAisB0StB4q37u+kbYR/kQl+/2+otuUKiClYqaNYhrdJ/JMCrxFt3zh5P+mQVrMp/NZsQloj4eY5Pxp/fmewUpP7p/FP7MOpLEVnNP/p/a4Cp+5gKUesaxK3kNV/KZInmCIxemdbbH7Bz5PKGwojeFaYUX2nIu5VaYR73yaYOBLURGKee97YKkdjY1lM5/Qv06ilgf5/Zlb5+ju8YPMbI5/M7/t5DbFdMi7wT1DbAsjUQshf8bDvghmZT7qGacdYfjzZqGQohA2gH2A6avkUfuHn4ohPR0fsaHUv0eEdYd5+XP8l+e+11FPP+kzm+wVbmv9j8ZAJTZnIncUvWqcHm6dV/D5B6pZleV/jFJN/Voo5EibJLZm6YOAUSpG1Zsy9ZhFi7C6++3S8sETZYv/jZXP+LYbrD/Ykv/PJre3HZ4v5nXnzvjYyFyegfe9d/sv+Wg26ijZ8v9sEw/fQziv1gPR+1V+xECwoXu3V+HCIfIXg01/6v4XDfPDZE+v6nCzv/1Euv8LYq+5dYDv8LYBvy9YIf3m1Fv3V/zYA1/K87bYAf4CEVbLbZsfOvj0RCTYPv4Uysf97YXv5QpoPKPYsv1H4KbOt/eMPcCO+wHZ0omSCif6rZXJmP5/fSTYYf6z/dTrbYYMbXCNRHF/blPQo/Y4N+Of8QEi7BM5tIn1EuQYl+SfzfXeveD+veFj2lf+JF7iOfItO+L+Nf5PXJ+6lcTv7r/Q+/z+/YFnoI7BhF9IuSjUFEv25v/QpbJp9ZtIvN+m+5F+Lf+MMtf8j+Vf2UpIlqMr8IlusvfzjTxv7oo3f9z+Qf9g3Rv3V/uYE728f/D/HP/r20VTD+JFHr/ev6iphFIV/+6Zaxhv/o31e/t/HP+LvCHAb+l22z/rv7lshf/d+o/LtOlv7C8I9Lodtfw8Bb/Gt/g/wT/vgeX//v/DTpVmT+hvwdso/zJEVKGu3NbP9Z4/zkos/9H/hlHUOXPz3+SdnD3bbBj+I+6n+Moh9xGlF9+KVdN/vgXn2A6Qr+Sdkb/yfyt+J//Z+Nvwo3R/6HZi/+j2DbBd/+tmr/k7Bd//fNb/h/zfIEjtT+Lv5UuDh/zGZg9jXfW138QxQgTaopuFcDKd+GcJvsaQFUEj7aj2Oka43h0hA76SRq1hkyEqd4pOq/g8oSKpJYiKUACRqPInPopOpFogP73EO/8sFCQKDqircql3GOup34O4EC6ejy0/pSUMlSumPgOwAHQHoAB6CBh/FQBxChTvOgO5AFryO/+9xAaxLfI6A5LIlUE/xLv/JwBdQSYSkn8IAFcAcjqXbp0AakEougE9HgBkYpN2NABiDz4ARD2YAxZOnWw3pQTGAAGSRqgAQsYmoxqAbzYp8ItOuoBOgEpOgdAQgEWYFToxAFGAdCGKTpyAVSCkuhNksYgPErANozgEYSiAcL2qgGIPIYBzijOakC6vAESfusOZxhLKJwSE3R2tEso2oYzDgN2cw6bIH4BusABAb4Bb0SRAVp+ZoTTIEEB13htDuEBMQGnGHEBo8IpAbIcmejJAZVUGyjBAdZ+986iptyQQc4AKFuMGhz72KooZQFCGP/wNPZVAXfYOSA09qbYqDg7koH2iXgsCsnsvvbQ8iQ44DjdyOZugB5Mtq0BpFJKAg0BU/ZNAUoC2TjcKGTyajgz1kvIvZKUIAI2G8jBku8gVMQ/DJ2S/aArAVfI5vBv6AsBG7hadkzu9DhLyAvgsu5UONwocNIp7vXQtQFDAfEc+NaB9nUBOeo7JO2MX3iAIC4QyLKlAVhEJaAWVAMMewEZoNOs2IwrAM+w2wH4cH8BawFejJ8BEDhLAXS8/dhehHMBdDgbZqL2UwF6DHHOMrhjAUIYOjj3yHcBaIEAKCiBtgon2NCBAIGacvk4JvZVAbYKszYVuPJuH+SYgfyM5lwKgI/+d87P/p0W8iwkjgAoliC1OL34SfybOIFgc+ihWK3KmziG4P/Y3IF3YB0MtUT8gfGSDrgMASKBFsxwjG/+zMYm9lsMjTgikPGM00Rv6AqBESiDzHdG9mQVuNwB3QGSgb6MGngf7kkQ1JY/dM5q+FQCgV7YHIHP/EmU2lAm9iyBsIFtNIPINoGgOHM47IEOgdMBdjQntEKBIDiugTKWqwyjzPMB15APAR0MXSbyAnaBCijIzkpCJJw/DHKBkYytVqMMqWDTAcvgAYHigajAgX7MjMKByYGige8M0oHMOKeWPoFQfNGBELJSgbcoqu5HgG0SzIE8FtamnxQ09lqBFcCrXgMMLoF9uqWBRoF8gaA45phX2PWB+ESvdu2B9ZjOgayIoeRHZOPIHCwaHt94lNibOFBgJaALHFP2ZtRM7hOBqVyBgdEkBIHhZGKBBYyNOMpMFvZZgSsc7IFJgQo48jSJuh6BtTitgaIScYHeDM8OuYHdzqjA9xznDEqBC4GHHBA41YHInCCSV8h+RvI43gz9EvaBQ0DTgf6Bovai6N/ClRw9gU2kFIEmUBb2U4EZoMOBDrhPgfhUM4ExOHeBZj7knFowjyjh1N1izzCPKJDm6QGzAHBBC4xsnCs4awjIQVeoqEGvANhBGEFx3Fz4G26bOIpwinbEQfBBP+CIQdlyizhUQa12q66kNKSkuozOAjWOjBgMfCvgbxoupMxBlpaijmxBTw51+lxB3w54Tu3moIyAjre8hOIyjj8OVBZ89ACOMI6kgCgWokFyQTo0fEEL5C1OIVbwQAiO+JLbNLy8ck5ojud4beD8jDbo2I6BFvbO+I5DjqZ8j7bvDkaWXOa04giO94AKQdSO/E4X5qJBao7OQY5B1E4zvBrQso44jstiC/g8jvpBm7b8jnMQoo6p4MKOwUGm5l624o7+QdpBBGAgjmRIOI6EqKqO5kFfvOJ2io78Tg5BrASIjgFBlkGZQXqOGUFC7iSOt1a2QQVB5o4htj6q1o6zNEaMdszaNFQWZ3QszkDAks6+Qa3oHo49Tu60ju4bjiJBru46QDqkKkHjzKxBb7a1zAzcEbakFJmOTM7wOPGOHI4mQUj0n+ipjlNBpxjFBtGOTM45QULuKE6CQUGOk0HmBp1BAsKljjfmGkEljtvmA0E1jP1BzID1jq+B5E6BQReOyUGnzjf64kKazs4w3Y6LQXXO5ujCzldBGOaaAWHGfM7foMuOZw5rQftBgaR7QcRCO0HQFmYwyQYttrrmMoKezreOuODPQZHO3U7bvPdBpASnjudmeJIwzqtBF0GgGJeOrUHKgPWOHUHN5lL4YMEKNL1BMCzgtFtBPGI/QUxB6k4LjjfmB2j16N6WuuZNQUBODUHr5hl8kATiThZBkQFQTm6W95wwwYOOxU74Fu9BbMFUzuYBZ6CqzstBtMGPjqB2okHcTv9BwsHsTnLgEMGkTmdBHuA8wX7yr0FiElJO9E7AXLFBMo7MTuOOkUFCTh+ObOYowXxObk7XQVxOTkGnzigBIsFGzhJBAI6Cwbng9oCJzsVOr+b7gMTy7U5W4CLi/TRNPKpOksGUwYcSpMED6HTBCjRiwbboWUgoFsLBmU7OnL7BMfhFOAu8IcGhTsHBX0HJBoFObM5KkJ7OcmpczrV6+BheTlQWrsEGDDnBwhbeNL5OTk7qwW1CKcHQFqlBIU4Wwaq8II6RTtzBHMExTtvgdnzGwQlO/sH2vFn6mvKpTlHB40HzNF3Bw+YnQT9ybcFtQflOdnxEwXXBuOZEwWVOLbw0wZVOvw6TwRtBHhZEwQ1Ovw7xwe7B6ObzwWpBv0GJSqLBxUF+SkrB+UF+SsNObkFDTgwGszSq+j4mko7jNFVBc05kztNBS05kTmIAtIHtFht0G05N5mgKcE6nTtDgu2AfwYdOPWaL1KAYn8EwXDz2PcCV3j1mGg4czibeyFxZ/iAh3PiI4BHUa0K0zvk00CGxDp6O78ExNM1gXHzNQLl+QCCCjvSmx/iIzrjmPuQQzlgIOqTX6IP2kM6PYEYmns4EIR7gpe4ozjWQoo7BAQtBWIqrvFvo/I6cztecypx2zOg2rCHRQHJOjM51zhTAHfZDwAtmdJ40zpTOGODM9ieiMY62rhruWUAZ5rgYcE4cIZ7g0CGw+rQhGlCO7qLWI2YzeC9BUtaEIToh6CETTkymplaqITLOwFyKIYYhCs6mfE6I6+gyPj1OcBhdQRvWgiEmULNOEs7GISohL0FIgdu8FiGDjrjWluayIRbO4c4l5JXOQc68IUjYpc583udB7/RyTphKjCHiwJDBjTCm5kQhmc6snlEh/iaBzn9OWCFSTog+r4JoIb4hQ0F5ISbOXiE5Vtghf8gyIekhqc5VzhNm0SSZzlOk72BUIbnOBU7W4HP2owp2fGIhYcJZzrjgwSFVNGnOE2ZcRmUhTM4+IUUhh/o04HBOEGxUpEMh9eiwdmkh0zRuwSAcqTR8IW7Bwr7WIbXA6E4zTrkhI+STNH6kCiHYfmEM0yCNjskhNuj7IeOOeCHp6NshCyHwIYzBHQErIeAh+BjURuYhBiF3ITpAtaRZIW1CWww4jqchqsGtBjBBS84DhLvOC873OIXSh84hAf6ukQIvNKvOlQhjrtfOIKEnzmCh/yE3zk0WQKHnzjChbXbipOChm86QoeihR85NrkKmJqrlfHSGsYHcuD3yFQE+gUYo3wLEgBGyOIy3PEUE43RBjIhuJDYlbC72MG6H9ibsHozUoU18lBA4jFx4UQRCYJmBV1zEKLOw2Dg+gVVAY/h3rCI4hV4zfCzSVji2KJkEirC3dl6gC3y0oVMoC57OMstgThINaIMCDPYSoUHYBKGHgSKhStaksIShfkRx4h0BpKHcoSC0sBwyuM+erUwl5GuBC6B6+DXkIoz0oVzCWLSRgashNqHPMDyB954zfklEfKFEoQ3iQqHnOPqhhLSeoYKBM57hftewPwz0JHYojqGIkkAotMLWgBb2KqEm1lxgUIwyodsEGWwBgeGhOqGGoXqhdkT9yk188yEyuDMERfhioSkozqFFBLyhYfZkoTyhgaGOuJYoZaFcOH48y3xFobz2ECiSoZaQ9faPCHYo7QK99t2hsqFgqF6EhKYRoVWhPjiXaP0Eo6GUuAjKAaFmOOE0paG+oWIoc6EngBd8iaHoKHzgOUyl7rOhqSh2qp4ElKGnyFkontYC0un2hJ4ngE/BMTpGUm6+QhJRVq92piTEdLiUYYzNDLLAokjCiPSSYAxpSMmmr6GdgPZIlqEpKKKkmbgciOKhpFCRuPUY7IHQwCoopMQQHGH2sCyUJIjILva3oTBhuEDtDGBh5UgdGNU4QGEk0vehgTh/oXG4mGEkjPFqMUTXoVCMHmC2uIRhxaG16t6Uz6E/oR+4PUQfoWRhDmBwHAXITQxa7MIi8xQjgXU82JLKTDT2WKJ1et+hN6HvgRoktGFD9obGykgFOJkoa5IgxIEQx6GNZNlI9CYRKDjq74BWSLuyy/ZYOPW4xWIMOIsWc7haEK8BNijCYaOYAYFAQAfGUkh1ofJh/6GRplD2o8wyYWZhZGFvoZZh4BDxEsWkDUh6YaL2P1YrXLxh5mGVpqZhCMDmYR28jmHUZvH2g2QCYYhhcmHNvL5hkmGzyGQhSyQlpseh9GEgxKAOwWFJpFW4qGHx9h5hOGHgiLq4NaTqSFphV9hkDKphLYD6YR9wCmGSpu8McjSZxFZhvPYxYTjEL6EyuBFh76F1eMVhIWHmEk5hu4EddjSBinZJSDhBO0DfuJhgRdwmUHhBLERhAOc4nWHnRN1hGzhxkH1h7WE9YUNh+SJl3KfIU2HHzm1257gn3Dgoc2HQUIthC4xzYTihDEHVmGrgHnpxAiZOyGoRSHyMUTS7YXyMPWbXUvJgzei1pKyhF2GzIC8hYBT/FLcoJKTXYTXWFc5pTgdh9zYO4NVIuXwdepg2y6TPYQrWWhZqNFJgimSnHE9hGohcZADU5SFfQOBkgX7ojkU+m3qsYHEhBzhlynlg+2HXsF5cn2FRwZuhblyI4UkhV6iPZO/uAUHvYYA2ZsCDISzS9zajAEBCAvoKIKQhSURuXL9hXso7YTl6lJR44edhgDZQYIzh8uAdegGAS3LHYczhsMBs5unkTlyjch2A41yg5EbgGeaSgCtk6BAIyt9hzOGpwJ6O/2FgxC4WX8Fs4WZkowA9ZpaQBmRSXG0hirAGZC/UK1xy4VzEH9SijkrhxJpnYR16I3BHjmbhVuEzakbhh8oj5qu8ZuGbvNbheeCMTJIAV2GYpCcGkBDngmCo1voS4QshROAYKmbUmCGeoU28PuETZqSA0vq3YV0h5OEO4Z5gGyFq4Z5odlALIVHhkMTsHnjhuYDIZOHUHyEqRMHhNZAxjgSh1vqk4XXOQuEnBh3m8Mg7YFzw12gq4XzhFPop4VY06gLf5AsMcOEC0lXEzQy7XJECEgYMWGoWweB2MC9AVOBW4GbhDMi4RHXh7foB4U7hbuF1PiLhjKE65DwWv4K8PEaGAuFy4FLh1eSPYWzmEX7gZNH2EyFx4S9ADeFAQh16i0BLcq40u+HkIH3hp+HEWH8MajTV4cRYo+FV4d3h7qxyjGo0y2Dl5BPmChab4SxkZCE7IQKAaoaO4b00+AZYwEpglObX6AL6p+gLvMThbsB34Vzh+IYR4arhoBGhIP/hCcQsGJQh6OExxLgYO+HI4Xt66BEKfPDhNPrIEX0hoExSwOfhwOHL+kYWvuHverfhR44f4fRkYBFnnL3w6/pv4cHgXrzb+l/hv+Zm4RxepuEX4VE45BGMhh9wruEkESysMuG65tQRDKxDQKHh+ICbeqE4TuCYESAg3BETZj/hABTCsB5WABHYFFThW6piETshSeHMPMu+B+Ez5EAR7+H44ZDEpwxo4UJgblwcEfOAZ6G4oSVa+KiQfD1cFXrRQGKkwVgOZA4RkRapxP4cYVxv5pXhqcSyQGZkVkBIjo14dhHq4YDhgfJYtlzEGLDI8m4WPWQUdk7ybhEJxL4ocaROEf4shmB28h1I5sTJEcieIRGBEUw6OhGZEWkRvczLobkRYREwFjYuqRFFEX4WNi5hcPTEkDaWfOVYFiJZ9GYW+kEOqPxKeWTTwKJiNKihEU7EzmqJgqURnRHlEXR4TQgpaE/hgfJreOe8qWDreACaAcQqZDERotA8+gzgvpz6oN/kj8IJEc8kZcRTERuksRGefGMRMzTeEdHh0RY9eAER4PrFEQMQK2iHEYFgiYKREZDEs1D+EUxoCcQJEBJS9qgrEfBMLhG2nAsRVcQaKDIusyAI+obgHHjjtJNkFuCLDGGcEnT64Z4R9qgoUthMfhGNET0Rp8paFidyhVSdokMRBxG5+nsRsdqSqD4Rnmh6Fhdy62D54apkFpxafBr6oqg7gD8hnfTUBhIsowAveLcw4bp9YWIQXGhEQLN2CPjJ9E941zh9YWj4FJG8OOSRYwpskUE+2Ejahhj47QqgUDyRq3RqgFSR8hS8kXSRYS6I1Pa83naCpgDWcfQckaEg7JGikcKRDJEiINbqCpHEavKRXJHGrrYUwaJCkbGumAKCkVKRinYvzjlmBpGh8j4wipGakVFwypG0kbmuNJGJYIaRxn4kkWCsfJFuok6RKvjMkW6RnJGiFG6RqpGWkW6uApHAyGKRW0AmkYGRwpEMxjqRQZHhkc5s97LRPk/+0aKxPpL4hDbS+M7YTAyI7hzeVf5T1lL4WmHyONP4OSDr6KOY38Jq+DfukgbTISb4EjaSBoY2pzbXthWRqvaZZKbuDhRt9tBWWe75ODL2rVZpkZvGqOxtkQgYnFSZ9k2RJAb4cM7YdZGj6EI4wfZeEDDuHIinWLk2a0ITkVU2szAYHiORSigHFjgeOkgpkZh2yAa4QJn2nRSJ6NmRqOxLkeroLZHUBHORskFLJlOs7U6kHvz4n9hn/kTW5I43QruRLYCI7gwEjfbjloBGEN6bkSpO6+j9+Ak2SJCc7tOsq5G0dhXo9R4ZNjrWaUKAUavIY5HT6L+Rt/5JtvuGgNT9rGm2MMbg1lUEXZHkjmbYEejIUajGgzbtrGg2We7qOK2R0FGB+I2Rsnb4GExwtZHAUeSO7IAr7luRAFGqhsas35E76CRRWeiYZKjueMht9s+R6kaaVJYoqZEIGKtextjDWEmRTLCUUdsWHugCUXUEe5Gh6CJR3HZrkQ34X6KMUUJR6eh7LjL2qTYLhuEB2NhUUQhG1ziE2E42Sh7hsr2R95EIGDpRvNiZNgCOBlG0Uf+R6lGwUbFYfrYN+EjYi5FyUcpRC5DgBFJR+mzTNlzCRlG4BIKGrUzoURf4u9bqjnxRiO4llG042shvNieiaBi2+NeR3szlNomselFC7qhRQOzhUZa6hBjT+PPWVCAuUf74eZHNQY8IkyBBNp02AO5OIVr4VlGYVIFRYlHkLB5UnlFHkSXMXoBX9pFkhB5B0IlR1VGtzDtcJoCWET9El6EeBNw0hB6dMDdmbUyUdvuGnh4L7sFRykaaUen+HVHTjENRyB7QGOUUwfZaYS+RW8CnWEeEs+7aUDL2kqaUHp1RcgQOFD+RDhFrUZumTuiLUeS2LBTlNmxGQOYF6Lum5+iTUTsMraanUaNR58jtUa3MnbhLUYKQrcxNFMgWuUzBUSZoK+7DUbdR8h6pBKOYzFF06us2wohWQTTAgVHVhHweT1HKAR9RtMZ0HkcyENEN+L4ePujJUQUQIh4+6AgeZEhTUXV4lB5hgAIeBejAHnvkdyZzUdduwlGzUXwE9qbq6JjRbfZEstpRiNLnUVkQ+lEO6Kr2N1GQ0XDRDNHMjqDA0NEaiIjuthzA0XYexlFXUfboL4Kk0WgmrUyKQNTuZJT0tnYgj+6i0dsEy1FpQrGAeB6dTPNRpB6xgI1SXQwI0RYe3wIw0boEL+ZjTBfu9VBc0TjR1lFy0ZQo61E76I5cjfbXoY5BNsyH9tLR9I6W0SQ2CtFrQqbRYtGJkOyO8cBC0eNRrMpX7tnowVEuCO9R31ByIUzSZSj20ZHMlUTnUeAQlB7OuOTRkaZJ7kLSiSjG0aAYFoAS7qroQrb6bEjR/PgX7j7RQejbUYfoutHGKG+EB1FnZIbRx1E9UWdkJO7epiLRusBX9iTR4lEV0VbR3NG4BI7RUtHs0bTRrtHy0Q9RkNG/gFzRTh66jnAeuUxJkeERWegU0RgeCdFo0fzRKgQx0cdRBVER0cs2F1H1QSHRq8h50c3uYtID0VnRrO6gHkSROyiZRD9CrqZ5cnXY087b0X6REsz3+joEF6i/LEfRD0L70bfOWWZn0RIsxsg70aAON9EIoTihwLI9TPfRwfIX0eW819Fv0bfR9EH3bh4ExExmHDy2+9aWTEYcgDH9tvyAeUrJ/j4OCoBhDNAeJ7ZYGh/yociK9uggZRxAHp0QZSjAMS4mT0Ba9nyAIDEfKNB2yDExNLau4HbwMRS+EfqR/tAxYhjjmP223oCZ8pN6k9YngIYmZDHb1r3AADFEMVmY0SAJ6A6+dDFLtlaAKDFj+ku2XzIyjrAxaSjTjGpAe8GejNKspoBAnGXo60BtwsMsCDEpEFnovih8MVL6dDYEMSK+9QyHyPIxpDEyAOB260TSMTDgtrYVILXoaUJUMYg2tIC9HOf0+9aJLKwxTDFrtiOYkzRsMbmAzVEN5i/+ErZ8jvyEzYbuATIQhdrVltO2VJgjEWR+w8DuAdj4IybH1N4xHRHcShi2VyBP1oWUp8RAdkPWBbSQ4dgxGP6xZnVGCHb1frFmwczbBOvWCGZILNjY+VCzHA1g8TbC9pExWgT+jAEOoTF2WH4x4dgi/oqE33hkjASsXdZUfl4xDLR/UM0RNUzRMe0x3b7hMakEL9RMHKSEW7asTium6MCorI8Qt6YuwMoBF5ADMcxU0THoVj0xczGydnhmd8RXtmUxyTGJ9hyOFIKMNpe2aSCxMR6goOGH9i96RTFA0cQEB7YWImx+EnYfcIERRGBoMWu2WdbIzJg237Y+MTBUDTHd9uIS+aaLMbs2w77oEN+2VTFBMbcxlfbNMTO+FdEp6GfgXH4nMeTsQ0AfHAcxJDYsNj5mWDg7MWwQiKI/vlBGGzFfMSix+HYbNlRmvTHrbN6WfGad1N32BzQDJr0xsfZQNrEcxTHbNhUgeZFqSlPuSWzfoMixYn7ENjkOFSLdvqQgsLFUkGIxhIQMjMyxZTEUsYVsBYznMVoEWrbuKAnRgrEGpJcxeLHapn4RSjEcsWh+PzGINiyxLzGtMZIxgTGdMY0xVLEfHI8xiDbAEFBY8xSfhOvRryitWEVmJDB5do5Iv6BKpg6RoQEaWPJ+MsB/MmaxSdGWseZ2/ArGsbXc63Zp1C6xjrFZds6x5rF2IHSRX9a3MMz4rrGX0eehhQHmktD2nvyiBng44bHvDG3kSyCxJjWCFfxJUqo4QB7EsmpoSbE6HsO8DricckgeIRaCKN6kqu7l4mGMsbHK3CmxEbG98EgeCbFI6KWRQB6daHXUP4FD4sABp8TPgcSAmUrFaPYSrZJBiOZUefC5hKpgnxpklnruj4IrhJhgqRLFhIQ4F2jPgWQhuAF1sTwevGCe/Cb0ybHRsYmx5bGd7oLKkYR5UaOxTZIGpFlRv+hkOO4+HB6XdnfKSYQANmKgW5ylhN94H+4tsXSMe7GmHqdoY4RbsdamHF7yaJlEBbGzsVToDJiuHouxxWjEYDigpwxzsSySy6EgjIex8zDbsZ+xvvwJ6GaKOhjTqpZo4HFejHzg6A5WNuegLjEj7m4xcWxCcjJU1YRdUVoQCUqYROBmdQRocTloKJxjUcSg6HF7IgcMxHEEcYPoaNFnVEqm+NHnJl26DhT3UVes0LoYcVtRuYBXsSxxr2zJ9F38DHF7USim1HGhpsTRvGIPhELQaNH8gMJxpHGfbmKAJHHcZntRUnEUcTQQ4NFLqCRxgRCZ0eRxabEsopnRFjF3sbSofjhXBIBq2YSe0WDIhiLGTM9RZwQyVLcUldE4yOZxAnF8KLVI8HFeoLpxdnGbhKhyzthccf1UlHHnUXxxtbFeJNPRTFBDsTZxsdFKkO/8wiz40VIxQLqcitPRpiZU6ArUaNFycW2xv25KcYtoEnFA7qmxM2il0SHG4XEz4HGxRGASssVoqgBQ7mZxSXFzQKFxuXF6aB2wFhG6dq5M6NQ2YBes5Ei41L6QKKFTdlfS9XE1cZ/EdXFemK1xwbELYVVx6pKdccnIPXG/aI/R+9DkQV44gw59cathA3E3KH1xm2G/0TXIIqQrDG3Ys8AaJA40nvx2gNBAytx8pEi4LZrbCOEiuchfyrHsOoFQyHtxhiIV5C/mfR66jF8abk7ncZ78Juy7caFUCAET0Ddm4rJjsYd64iKNsiHYpdxLcX+0KiACAUfgp5bkgFKkLgGl3GoY53jonkn6OWg7eu926J4a0Ig8DRyQwJtxF3GzsDVBAPGjmDdxkiwo8csQKTrjWCqAYPGUAQWBy4CA8Vexuh6pEgGymAGzrk505iYSARShuxI/cSIBGYGKuF5Wh7G2AXZIjPGfGkjxT3G08Tm69/pOFhykVPH5cssgpPGKASDxFUrXccH+WzRVgAjx9v5NmPcgBkis8Wn+9PF+SCtxwf6dzJD683HYjEN+HPEQYIJ891ji8fqOovFz/jeBHVRK8ez++PFHcfdx09IpgT1E5lJ5/sIsLPF8QFDSDGh3cVTY736WHDfAhPE40hGBbvEhUvf+O3FPwNDxwv5BNBSAkvHE/s20M4DB8SbxgJyv+P7x/P74VhjxKYBjfhohuMDu8e3SGxzAIoLx6v47gV1IlPF1fiGBivHQzvQyF4FG8QgkRX5SUnHEcvEm8as0HhL58Wv+JwgSEgyWCtiO8X7x1LI2RJ7xzjHOvmK2F6EocWvCdyJ88YA4lCR0NA+EdIYyEj3xMlRHRIkSE9ASAWPxaUgA4OABGJpBzmkS+XFY8W6yC/EZBljxFQEL8b560LpD4k9x20JE8fUgO/FeJPWEsFDMIs1AyIZL8dIiA/HLVC2x4SKX8S06xBAGSCPxEPE9Ab9Ij/EGASEQ6o6KqLPxpdzDNnAcM/F88T/xpkhpNHjxLQGjSNnstAETNtiSiMDfZtWaHzjIFsSokqJ08XOEDUitNKG6vfBZUbBos/HhRIKSf/F1frTAWhKTDrbYbDaZuCARSfw68ciyG/F3yvdYzThpEpcW5v5WhBfxh/FaRJgUDhJZcWQB9eDvdp/xmX70CVmYGAlcCdOMmxI4CUv+YBQMCZc+6P6QYQax/uI4huLsBcjSMlIJshzlZONhTojSCa0OBpLXsMoJCgkH0dqScgmL7GW8KtL1FPIJvq7DcbMOwmg2IDoJ0jJKCQ3cMgkFAeHinRY41gT0t+EmNgFsxNZwcROheh7zwP+Aq8jU1v9kfIz4Nk/0GrYE+CmALNZnkVgRDXHLofC0Yh49WvrWAPhotpd259bK1jQRzuBFtnLWH3R/grLWUlGjrEyiuQRnNjSsDuhq1tEJP9ZLFNrWC7bS5FEJRFGSymSx93wNttf600Cu1sTWs7AEovd8ttZXxq54DtaZkfysD9ZOCSLAYBCvbF7WM6qF0lTWZQluwNii/QTFCZAY7bYXFpHWW+gmNrHWzgkfcAnWOwTFkZEJqdaLCSUJudY7tpfh+tZbisq2qwmF1jpARO5LCcLY5dZ5ZM3ozbZkUWzAGqIt1mY2fuSnCfBRQwnttj22PNYnCZPW1ZHXCZPWVQme5DUJ8ChStkSsDQlz1q/ApwyZtsGO/wnEGK1My9ZdCUW2uTF9CQzWkf4vCRsJk9ajCZ8Rk9aztgXAHgmJtrh25CDdCYr+ZlHtCa1Mt9YpCQQykv7ZCaIRgOCorMiJhQl29hEJOwnANuiJKInvtsEJICBjCeYx6wmMiQIxbglhrKiJJOzZtmGsFhCh/uFRZ+F3ttFR5wl11qQ2VwnOOFi2I/bvCTVi2GAbMbCJl7Hd9sUJ7Xq4tgR2shG0dKCx5VHKrPci2SiMML02K4LCdtqJe3QWBPx2jcBGtp7kTBDd9mSJ7WCAsb22OwkaNu4e1/rDCTo2dQntYPo2OVEfmGaJklG3CW6J8wmFNps25Il2NtaJTwk5NuqJrwksdnixAmR+iYk2ssokiTJ2BjaxNh84czYzluxBqoltwomJ66rSiZJRsYkq9CwYlLGRiVLAmIn5UZB2tIlAUQWwx65wiUGJvLYhCRUJ/azvMa5ksQlAUTIQNNZ8GLORDYn/ZFiedTaBZjAelqzpibb4mYnkwIiJQYm9ifaJBTZEiUOJNQydiYLknwmjNns29QmTNqx2NSyjIlzCKzaticmJgXEtiVfGzzhs0TWJDso2YJDYU4kwthqMRbYDNny2dYlgUSOJBwkdNiS2LInlDME2WeQciV1MPVHnia82MQn9iR82lIkniTzuS1D+CU2J4CBgtps2PgmK7luJQok3sbs2MLbl4pe2PLaUiW2JZ+4/tpasVhzfUXZRoBTNMYHRXZaR1kPiYTYMtir0HF4ntjS2iYZYkcwEOEmarJaAjdGDiaaJzLYoSb3kfomxUoWJgYkfNuOJNEmCtpW2E4lKAEhxNn5xbMRocdbNYCY2PY7UNkJanwlKtkz0hDDn1uq2ezZBIkT29InYTHocBrbBifDygQl8wmG2P9acYJsJZ4lsgHeJ/47uNiIoRbYetnlkLiitTFpJtSxBOJm2akks+opQp340iSqoibbIiY/CpwmASQDoDon8SV9k5kl5tjxJjXi/CVm2ookpwJm2LY6N1lQ6D9bcSf70GklyBPZJGPpwklT2NkneTHZJMEnhSfcJ0FFCWhFJYYnBSTEcHdZnCbFJ/bbFCVZJSIlvNoMRw7bKSWBiczYTtij6NiZwKMqJHPoOiR+2JUm/MdG2mFp3MaJ2HPruiVe26wlkIkaJmzFgTLrAJ7ZnMed0eDCIsYMJ5OjHWIH+HHb6SQsSM/5hSYJJSihlSSlJiDbIiYpJf7blkdkR59YhFHfWbIA8iUb2CEk9SfgxRwn6Se7oGTHrSafKmolVDitJjXhESUvW6QmpxHVJHbQzSVVJHDaZSanE2KJn/rCJU0lLtmnW2EyJSWf+k0lIkjJ2lklvSQX+50kALGrWzriFiblJdLGPScNoiRwugBIJIjArdn7IqQLWdoN2+XaMkcKIfWFl6IAkCRx0kYjJb8R72J6xC2FJdrfE8Mk+yD12GPg4yV1xz9HKdrfEXSJS7EjJXggYyc/RfnaQyRN28NR4yZVABRJ9YRDJcMmmdqthWMn4yaF2RgmhAajJfsjoyXl2Y3aMkapgCMl1ds2iLXbhyCLJULiUyQW82XYY+DIA0Mn9YcZ2zmxyyUzJ9Mm3ZKzJe8Sqyf1YnMmePusOG3aVQL+EKMkiyQbJwsnzdjTJlAB+sXrJrRoNdoTJ0snUybLJXXarYXbJDMm0yfNhz9GayVDJ/MmAJB7JP9FlHmvCm1gxwcV0/sneQpf4sd58/msyZoqhye8ObLixIJHJcibyWLLxnZhyJoUEscnKJtr4aICbcQ7UX0xSJEHJPiaxYinJfko1oBnJ6+i9fBjxZMDapuC0iaRXfj7oGPGgwLqxvGyLpLHYo5RYzBjxdsCeMZqgFqQ89mNMxMAWpM5+10xaQLHeV1DLDImA+cnVySPJsGxbgAPJ2Eo+Qj3JfSQNTALxKxzBJB1MZEBapB32PUxhIA3J4YpzyfDIi6SD9gNMxviVyQPYlUz/QAfJC74ohImkd35DyTjxR4S66H3JxCDonkb+XcmewCKkWf6PyRLxKJyVJM3JzrJcIZfJdfFlyRGmdvF/ycNMBaBfyW8kngqGQM6ySdhQfgr4z8kJJEvJcfEPyXApRckhphzI58k7JHvJ8PHGTIfJ48npyV7IbyTVrHnxgCmDBEskOcldrF7xGoh4Kb60ECmVJNOs+8kQmC/J46zzySwUu4oMKdvJ1YQxijQpGCnbCAckUy5IKTZm9KCoKSumfvgnyfCxhcnFYuEk2GxapMz2s0xtIB3JwST4KTPJG77tya2BY6aDICPJ6wRqKbf8k8lMZn6qWimoWL5II8kvYgYpjfi6KXsuw8n4RAJKsMwrydYkZy4Y8Zno7hxptJtxuX7WrLfYUqTW/sH4MilZcvocSinkKcxKUsQUpHz+KwL+KSQk1wQgKcxKJMRUKbCcJEKOKQckntLRKYXaRQJtmPfJMYpGlEkpMSTC6oboI8nc4iQp9OIjyZTCGSkbHH0k4cK6KbZ0uSkWJKUpyaDFKdPJBSnHoLJCjCngGKmgcLotyVIpjSnCKYOUJEJBKXqgcnQEKQEpcLo4KUwpioQDxBjxfZgDKTyECcmEKW5CpckBKRCg3SnYJN3CfSn36AhUS3y8KTt8ISn0BgckP/Jx8ZP+7TJnwDAptFj+QhjxuYbvBBspoSnjioHJicmXIN98HSkXKbSEI8kFMhPJTkzYJEspyinPBMKoCikS/OZ0simpoMcpBjBKOIiEwCliKVBYrsK2KVXJe1ZmgAIpMUpPKRPQaCl3KX0pPVCc6iHJbCmc6tfMfSmEKf3iI8lIzEHxAKmxHNAKO8nhJFYywKmHyfssjCkLKdrqvgoY8ZfohdoYqRjxtyFL4rw6ESlpimSpJyneiu0pJCn4qVcp3eK5IEyp8+KqKe/JAnLfYvnJCMScKYApn0hN8RohtN7gKdUpJJ54zKOAVil9sp/JmCk3oM+hspi7KRKKa0wHKZApz6E8qT4pTortFL/JfP5SSDMpBrLjyQcpXCGCqYSg9Kk2qFvJPSAqqRSoiClrKX7ejKnp/oqKVqkEqYqpYCk1yYP2OUjHyVipMajmFK0p4qmlqOCp2IryqVwpDqkCoCxJCjKvwe78Y0IJJIn4aUgHIqimWUQJqVugO7QeSJQYNxxOqhdE3oH/mJ2owmiqEk5YUUiUvoqUqWDT8QVhFIIR0aWpTFAxJIAw5UhQCX0k7lCoIMSoruzxKZmpMamoph1gBkRtqSmpljxJVF2po5TVEba4fan7Ajb4xKhWIAkk6oBpqV6A46ldyp2pYsbZHKb6dkgMHmokM+aiJBqM1iRU9COpyamjlPDoxUhbqYUkzkjpqY60H0i4GL8p9Hw9RAD4kEr/yk+0QiG7iu8RkAk+MJUkd6lhePAJNUGOtFIkPuThimepv/Gl7IXa0PL0uEOpHigeSABpO6lxxB8iv6nOYoupKxJgWIQwlamvqd8gYcTaho+pEWguEq/2BbR/UDzIF6k0/A1k10gnqUa0h2phnkMkmuQasgkkIGnAdHup1A4KYeRpoUrEdDepioRuFuepqGnrTDx4QGkskr+KXBb/qbhAwSQySJJIW+iR2Pyg76n3EKBK1Gn98VBpo5TcaQxpzakwVPfmHGljqbWU4xyjqVpBYLQIaT+pMFQZ1O3EH6mDHHHAEEBgyRIyWCFMVPLAXuLZgPppywDjYUgkTFSB4vrSZmkgpD8A42Em7OZpyYAYAuVkOoIOaZoJEjJWab+gNmnnRHpp1mkmaa5pudB9HvxwICiGaYFpS3Qzcb7JNoKe4HceXzxt+mo0mF7RaSrAJ+GupPdiMu69nElpKuIxaVXhhxbY7ueC/R4LgOWu41yxaT0WWnbQfCj2C6QAvBNmaWlC4uHAplZonn9Q81YK4lbuOyHJ3iriucD0wYHeJBAL4O58jYqi4oBMcSHNaV88cBAPISxea2J3cCSkBmH1oNFpwNw5Vi3k8WkoEQXewOJnerZW46SyCDvh5D5fPCEGL5zDngNpKVy9NBgQvWmZ4XtpdDH6IXFp+O7CESbeKuIF+rwhuWmngCcKm2nzaVVpc8GdIf6y5WlWpKbkD2nj5m0eF2nKQVg4E2mNaTfmw2ktacIGp1a1HskunWn3nGtydi77aWjO2mgK4k7Iy+Y/acyuo2ls5ttIIBAraX9mj6TDPClphqR1ITAQWOlDvGtpaOlrNFtpSOly4DMEC2mDaZbmbKSQ4vP+puZU6XgQYOkTwf9e+OKtaYTBW2l/acPma2l1aX28W6TvaUdOpN5fPNP67MH86VjpLsEAlmwQccFM6QzpysHnaQLpuNz4FocWkO5WzvagPjxS6V+8n2ngvCN6+c7q6SLpSY5KVi9po6RS3ulp1WnGSD1pa/qU5hnUEJ7i6c582b7FsqrpFo5i6UdpJU7E6bdy1ukE6WbpChbmlMtpeQZRwZ7peWlw6ZbmJogA4qoIHE7O6UkGXKSutNTpGWmdpG/geOl7pFFphOnB4OuQpukbaRqOCaT66dWQxl686ZuO/Olc6btmGBDs6dnpPRanaauOMul26QjmQekG+mjOqObBpP7ppnzf+AtpG2nZ6Q7pYenB4EAEmqSx6TcOCaQd6eSQDzwJ6e5O8enB6XLgQdCm6RTprI4g6TZAXzyV6RXmv+AC6XDc7k6VHsXpfxYb0BCeBekUTpceuekalEk8L2mUjurp6emXtDHpi2meCCdpZ3oRqfSBRw4dguY8qFbFzvEiGx7EEClBdlYJ0JrmcZDBpI/pRM7IsT8eEiEQyAb4Vx6lQRP05+AoSCSkNRIIrpDQWsGp7Bc8r9DlzuNcRuKduEB81xxNdB+kQMFfvO/p52IlwaRSCuJJEE/pkngrYkWhX7zEQAgZ8MG3XDAQBoEaxM7ODzyv6anBclztHolOjeELDHUe1BlUzmouGBlEzhIGCBl2znngE2kwGXtOHi4ikHV6W07qrvQZIOaTLtQZKHzvALfpmualICgZ4hmq3KwZXHyPcpygXy63LlTmmqQ8GXQWmeYOPMQZaU7EaMoZfk5S5oziTBnBzirAE+n6Gau84dSi4lRkqub2uHgQGhlRwQY+EJ7FAaKOthlW4ioZ2kGILEgQEBkkfMfC92LkGSYZ+e5W4t4ZOmlVcA7YV6R54A6uRLzBGURQVJFsCsyIdyahGUEZ2FCYUI1x284VqOEZVj4m8MkZf6RFEpEZ6RnrYroJalBxGTkZKKFbYfE60NwJxGSUl2qrQOBkZRnIusJAEOEeAX66PY4w4fFqAerEaDZcEWDEouRKTWR+ZLQY7+ro5Cl6qPagZMXYOOF1GSE8uLgE4RNkgzjFwJk8cmxZwXY8JRlDGdYB2eokikTE/XA2OKBksOSdGetSl2oYkpxsmxnVGRUZ7FzwARtqCoog4a2wbvbuogpkIcTqZFXo5xl6hkyUjegCuskaKCqb8fVkeLAbGcYBugwNZHDkXSbbIgmOtRmG4BoGADjiagrWlthf9IiGt2RXdtMKKgzAmdcZaARQmXcZ92REZAJkTOzkhkPAaIb5uKkSoJkjZGLSoMnt8cPunfGdFu6iH0QneNnxNGQqqNv6EJgdwbNqgDjcdCSZTGTUmW3WK3KkmUcI2RSMmUxkSDjnFMsQbJlHUliURCATGeuQYmQWsTtk/JnHFKKAUgxkIg9hxkCxaMXAK35YlOtAHjhEwpBsOkDyOGsZPf6ymZSZ5xncma/6C/b8GnYUWpl7wpIaSmBHKrSZBpnkmayZkhotgnjW8fHQDL2km3qtUiiZPkg/rE9APUrRlFEUjZzamca6AcQ3hPnouBoWmW6cAgatZHgJbGwo3I+qBFSKmZKZdzxlMBr6dClOFma6MpmqQDMZ/Opxmf7I/RlUIFTgqVwfYKne/OoLFL6AZXgvGYGZckDGmffUqpl6mdaZp+SSdChEVWRKkFR0K+CXkQZ6ExRumd6ZS8DenO6ZTBJsbGAQ4rrf5NWEfjgaGoqZMsDg5A7oUZmijCGZ2OaDmdG45OpIQSyZgbgB6scodHQ1meAMrZkFmRLyCJko4IWZEygRSKuZx7Y0mUuZOAyrYLKc2cDAIl/0w35YlFOZ/jw8mB4UY5mdameZimQkau92h5n5FL6x/Zm7mVfW7BkTGYksbRScmXWZLJmbct4BoQG/6jRcvcAU5GZQkUDHGB6RQFk05BPQFOQfEIA8RApP0VMKICH/mc4+IwpgWVOY5Aqxkb+Zl+7QWaDWCPhQWbD4iFlhaaxJRG52JCLEuuQwfjqiKuQ8qORYYzZ4xDHoyVhRJPiR/6riWBr6lmLVSK0af6rRqpHKBeSbLkK+/uTkWO4eYMBbvomqqyxbvuuJWBSnWpSGsRjx8oPkL6qsqpLkV6rn+nVaY4xnqkNsyaLjqtJZXT6CJN2slqpyWAuqPnJtaGRZDao+9PpZ/Fnw2guqs6r4vrI2fQmIWCpZv+H7GNOiw6oFwFKafopcZJFi175SWQOqW77Pqt2qKIZNPGzAXFhVIWDAf1p8WaAU7FlYojPka2x2WUpZVlntvDmq8XLkWJWRU8a1qmZoraRQFDiZEd4uvmfpsIrYWI7kt0AWnu6sq6T8WBb6WVlz4QoQlT7UGS9AJVlLPnkSSIZ+Bpd2SIY8htwU2/rjwQtafCHt4RpQ/xpb6AHEOVntWUYhveRNWbEaOphzWPVZE9BJ5FCxeVgz8SNZFVkBvq2hr6wP+kIUZoZKsuqORVlerL3OIb5VWUtZsFhUjmaG2Dgf2mtx0Gpusks+WkF9iQtZU1mO5IYx5ppzWctZSmGLWR7Kp1noEEhYa1koifdZnlmbWSG+FVluwLd0gTQa+h1Znx6P4WJkLbFIlLVO+5y6HgdKt+G0hk5BH5iYxIgBdVrRIWyGArEwfg1ZZcoY7k1YtVlDYvk+T/QGZP9ZWjro2Y6GOBnsicqsL/oFwL/go6w1WS1Z7CqnDD+Mu1kz5MI4Cb5XWcqsJNnrcUDZRc56TKbgf1krWRtZ7/GyyvtZ/VmIxMDZaNnDWd/6QcGqWNfopuQ9OEPO+FgN5GKJLR6AWLbklqwNmB7KglkLWZs+juSY2ZJaF1kqibjZ8tlU2QTZiMAy2c4CJNnU2cqsOobC2SLE5NmFGvzZxwkqTmNZj0HNCdrZPVnqyumgARmKMF2JTCYTACtYb+wu2YkZqszO2ZFAFtArWFieHtnMkf1YG26rWH7ZYhY+2a7ZfmlO2UHZAdnsFO7Z4dmFGbNxa64dcO34G9jkePbEURS5+It4ksRpmaRG+yR6mjkgK0RDwK4Y+tqGmZHMsiCnjCb+AI7f+FPSmIYZ2Um43tJ49OvAbUIRhqhMbyZhDC3ZqRTDyOIhFZBJgCggECHuwKABxYBWIGf0bwZ+WEWwFfhU9JV0SYCzCLQEHXCeytPZoRSsysRgVdplsgdOAHROOOn4CcIucCV4kEw52Q34nCSt2U3ZDtF52akUgSAKBNvZxdpEwJgEenC70kmAwbIaNL5Q9Xh32RtEmAxaOhvYR+ST2RDaFMQT+KPZKIYxspgE78qD2WBQldnuUYKISYBH2VAsxdl1FIXAx/ip2bJYubLH+B3ZdRTuwKgEc9laOuo4GzRwOTRMGDkkzpqGSpoIObAEVwY0gbiZa06uMQSZ3MRzZIH4LDQWFNKka0LcBHbagmlmQcUgyYZ2kGZBbYDJhg20jqrsORKGLmyTNOOsFhQLZKYGusAiigI5lDkJ0FHokloh5uf4LwGNdAI5QJk56jXZsRTXGmxG5qp0vpI8TvgihBAGZlDt+PQ5TgIxsEI5zDk8QOAwqAQiyBEUNJRsQqY5RjliIBY5A6hEWI5cC/jTrEA56NAKBMIEsZpOfKHo7Lw9StD4yjlUOXY5qKgV+JY5ePTyiL45VjnBOQpc1DkDZOomjjlFmow51UquOa3ZI1i0BJ45JT7mEFCZITljgK+wreiWOWOAgaZ0OaIx8DlrzA45g0ihRjk5iIa/hrfZvPTvJsJGzzBP2ZU5hdniOfPZvPRlOfMwIjm89E0m5I4xIDk5K7xlRrBKnZpoZjDG3DnJmmk5/DmS9HyGiUatOS5geoY9RhI5OEBypho01NiKOVDkATmaOfIMdpwmOTU5UVgoSC45myBj0l05Njn9Jvg56BBaBhs5eZpWNho56SAQBpkc9TliztOAjtk7bi96FJTgZssG5pE+3E85kdk7bvhmjzlRwM85JpHeDCrs7zn5XJ856pE66FduvznvsYHZDznAuf857JSQufg43zk+yQRZD25NFGL47J52jMi5ccmWgdgM9Ay9jgXR8WKh9jwKkaTxYg7emiyUOXOhgCBkSEfyWYD0xtiAR+SFmICB5aY8tnX6sfjpZGXoBLn6Zr/yLYDTAbam1UrDsvICDLnvRMtA6LkCvvi5XLlTGTy2YgbSDGM5dLkvDri58SYi3uAg50b4sRKed9jL4P1M2N6OLIAMt6bKuS34eobMVBiGOrn5BK1W9QFQmY74u0Djlmq58rmDwKNk9urU2Ekgr9A9oLa55BQhZAMmjcmDwJFk4pTQ3kWMQrkrTGKg3rl6ueOg7rnzJuN6krk8WOq5sI6yuTsm+F532OWmRMz6LF6mTAx32AwMlVh4OHMQHlijXkWMDMalAq65d9gvJjsm2bmIOFyGgvi7QM65Pybb1NcB3LmlJAm59viYZun4xLwxuUywcSw0wOKUe/hFhCW5wSCvXl6M9rmopuTeObntOZlYU1wGufYcV16aLMo5dFgw3C/YgYaxWMG53dDEprZ6EbmpWPhe1Ln1uZse1wExuZEw46CKufaUgKCn6cKmXfEPboFk/UxRVuBUwhBFTM+UZVltTPKU57ldUudAtM4mpu+EaxDVMVg42MbXkHR+JakWbJahW6AonCFiTMF2pgWM37k1QRGmYrr31HlMjpzz1IQwd7kwJmzZ6qY0LFB5F7m7QOB5keiuoP0xvjH3WrHaQ8CzyU066HnihD+aImwYeaIM99R4eenUVMHtviykiWL+jkh++nyrzAtZTb7rIAR5G77pRGR5sHnLfpQgCHmBfsVG21nYsR/MDCFfpk6ig8BdjghmfOo5jvpYVxkloJA28FisYPHMB7krplqaIiH4sSt+6Bi4Dhu+2X5YeQemDHkEYie5BQTDHFJ5K75AeWJ5EzHm5MaJj6ZbvMbk/HlJMaPMcZTcecsx8NImecCO3b5Aeax5T7kQJq2hBQQ0yHR5B6Z7um55NmaSYv+gbSbDHMh5MFSU8DB5AHnIhK8UFnl6jiF5WGItThF5/pRNwSZmOqC3uahmuGJVWV34WnnnuVY23ZQaeY/p5mKxeSu+ARQKeWvBBmalmufUcqSBZreELJzghGIg8Hk/uetMWXknxnDZZnn4eaZ5NXmB4BAm4XmJedam5XmRZqF5xMYgGd0m2zxkAHc5Khj8MICoAEQNjCo4NWae2QrsGih8VBpQFhjDeU1mk3kM5Dv4WFDayL8s83ltZrN5ALnVjNN5E3ljeYFp5hAJ2eFpSjKToQuEpY6VoYGhZYQeVG3CjaEBhHJU1eJSoSRx8XiX7F0CYTihmG+QQNRx4tphb3kUUSQ2saF2aI6cDNlotG6y6nHveZ1MAOAlAThxLUB1oBOhF3nN5MFUMPllsQF4qjQN4hD5p3mRNIC0Y7G4iI003MJKsupxQuTO2PDh9HHK5M7YmaFAulj5FByfee/8q+RneZqhZ7EZYI6WxKGP9nD5pjSU+VmEJGp0wUUEUmBk+T+QH3mE+Tm6APkxIBd8J3mMNoD5gBIXeSL5gvnBfkBxj+TQ+TOh0XH0+WUgELRqoXNUSPkhoao8znHntJL5uqFx/Ix0CqCM+V2xa3g1ID3ylKGVaLdUfChC4e5x+0jEoHDC0TgZVD9ULaGNsTHSa1QcofJoeWZTFud5nvzgCGYSHvml/E95RzI3ebLRBjQO+WOEthw9NPV8tvm+/EZ4PVQveV38//BClsb52IzpaF54nlS0+dFUgfljVKz5Ovl++fd5g6E6+V/kevkmoQ8BlWjkND0JXggSAak5q0B8KLahfbFbVNb5OPm7sdbq21RA+WOxFfnO+eD5U7G7YO75cvkV/F75Bfmbob75A9lHMu35liLp+WUorqFNkqH5Kfl/edtocfnR+dX50Lqz+dkoEX4SAZP513ng4UC6o/ndKNr54OgIzDiWO7mDQK1R/0SkYepxXfBG+VZI3jiYRCWE1ezH+ZhE67T5VIJht/mkgPf5VnYkcXKATfn2SJyh2YQSMBhhHrACAQYw8fn2SJBhJ/nXuE+0sGG4HLBhZ/myYZtU6ETr7ElhnWicVJX5B+y4YU+xQDzW+ef5ffwbKiESN/kKaPB4sAVlYZhEOsgi8dgF2N7w+W5hSXHdeKY09kjTWfZomsajSKxhZ4StJND5ykjv8epxhAUf8Q/5XWh4kH+0HAUQ3ogFOMRhYcToeNQ4lvwFomFI1PhcirhQBYIFqAWpYbEQZ1QF1D00Vki4+WVx3/lIBZMOjlS4QHwFUkimoWVxAoCeVEZhf7Fv+WgFxAWGirFUxgV3+bZh4vn/4I00WgVF+ZhQDNmtSF3wuBxb+EH5lGEr+Y8IBjStSEGC8vmyEFZUJnHqVFlAgPlySCVZ0HEqBYN5xZATYbqSdAjSMiNhvvxRBeNhMQXpaHEFPsgDYYkF5whMySkFo2S5GY3YKQWtUoYJOslWsTkFefDRBT55kQVpBQi5obFj7pBGkvbY7P6GmjR51DUFVU7CGNe0mXhOTJaM6MCdtnf+XYQIIOa2ClxNhszkotQwBrsg6WLF1F7UGQZJlJOGXNStBSOGBiBc1J0F+4R7YAfUm2x4OF621QVe1Kr6nka/1KnU1d7/kpsFVyqNBTZw7Zxv1HGGbqD1BV7UMxmb1PdG3klgVpl6emTD1HsFw6KQZFnUUwWm1JHAeTZLBcOiVcBvBXMFR9RGeADmvQXDotXMIHbSZpOio4aX1Kg+JCwfQHVo3NTbBVQg7/YNBSxs22THrieW/Nw2GDXUqdTnBc/AdwXXBf3GOMZAhdF6rUaghUGAYtQmYq9SbNRGBpWi2zAJ1KnU0AmUYopojdTZ1CmYICFohWsF8IYgIZnURIX5mGaO/Nip1LUFFHaHBWsFeDgYsAucPIVRYpCFt9SEPo4cH8AbtnM4lixShUvUNIVPovpoUIXkheigQoWM1tCFwbl8hV8F+IXP2LiF8tQ6hW2UjwUchQAG+XmkhZrUSYbqeULA9IXaBm/olIXWhYfeP+i2FCnUTdRc3GyFFdTt1NNGGMYgds8FYMYBeEcqPoUp0cKFHoVwxmKFQDSUPuEc/8Ej1A9cfdg0gGDc6IWHXPpscIVe1ODxm8AlwOqF3FzZeZ8FRyr4ZoSUaVkd8RUFSLyG1NvUqnh4OEWFtNRivKWF9tQE9BWFmczMhfG8HNSnBcNI4GxDQNyFKWAumFbGVESIFrSo0FLEsMG2pVJ8YrLUrYVu5mHMStQjBaYwevrnks6FIOAohTrU1YUEsNTUmdTlhfOF+jhm1EOFy4WJorsFVubawFO8bdRbhU7ArdTVhfmI1MAP1GZ0QiTUwPvU4RbthfxC9xBr1BNIh/owLK/UOrx4OG4Wu4VHhe+S0A7A4BBsBCx1hcy+RHkX1EGA/c6blKEgY4WS0Eh5wEVc1Ob6YHm+kO6FpjDRhcnUbNSPwmRSSg7A4CqoGSBVhfN4pLDDoieFJYUAhZ/U3hZoRYuFWhSIRbOm49TpdCA4P+jT1Bu2kEV2ZqiocYUpYOu8Xoyr1HJ2gEVmZoRFoqIlJOXGF4WNtkw44dQn1DWF+jgb0DBF64WOlEmFe4VCGC/UfEXCRffUj4X8RavMXEWQ4GeFP8CkRadg3zBmlBlggDR3hRly5EGGqFA0EKHlvChSukU4NDbJL0IGReN2ebz6RU2g6DQ0AAjJ2mhQNIn4c4xHCMN2sDzGRVN56Y5ORQwmZ0B2RduYW3nYnKZFIcjmRcc4fkWLdE8ALkVLeTpFZkUMJucIEUU2RY5FyDTORekCbkVxRYt5wGLhRSHIaQLHOKlF9nbYoVzJWWax8oZFAUWQYpZF0UU+RahgQUWnZr8smUXrZo2uOUWlZgR5XkXxAuHItkXYNA1F82FFGePgNPSTMkA8OZwdRQHJcL6C+aku2pyxQj002vKDRZ0ow0WLEAToyULqGMKu3YWQBNtIHPkbeH48A+h9RZtBWMSDRRWKgPkjRfFiK0X6jjeo3KFdNIR40PkDRfFifoKK+c7y+aHJYio02xG+KLi+O0VCEJMwNgzFcdb5wGjX9FfwaHiRLPFitJTpIDfgg0X6SsIFL0VAHg8AY1SzqKS4Bckq8asQwgmpSlYFPVSLRcIMejzx+WEuCShgxeNFPUXKJs40iS714Ci50MXkVCQ5VS6H+SB4QPj9YEFComTkTltkwgyGjPQ0hMUL+DwYIxLWYETFNMU5nHlm1MWGEs9FLmBNclHoa1QunGxCSsgIxZ6cBfhVEkb5OmAUKI5CJMX1gvdGc0W1wLzFFlQJwgzIaHCOgkVEKU7u6KzFVjbkxVIijeg8YNRkB0WmovsRtJzMxXIYIyDj4LrFrejb2PD5dMU2DFqEE3iRZFgMOuiX7Dpgk0WzhMqi2K56VGEMRThqlobF0EVlwVYSFBzWYFQMrnhA1GbFxsX3EAtFkzk2DI7o/DRsxbomTflcxZ7FT9aeVCZgW0I1PpzFcGS3PCdCcsWtEOI5iL637O7yRsVVwSVgnTkaxUTFqT53VELFIAqOMMDFVMUQMYpQQxDtRRlolfLHEvUQ2lAWDLXo+cWJYI2CHLkaMMUgYQWDCAWMgKjpqFkF3jDygL3FVKh5BWhZ/q6psDc4fcV1rkFx9JxuEMlFOXzSTCN5w8Uhrhz+sUxLxWGR08UbebPF9Gg9xTPFJiDWCfGRtgkrkCf6dSCJHH+2y+Cm6E32MMCT1lwwOwK/JmUOSIw0gqBgWolUkMmMwyBzQEgxuYZ16NkgY67oMbco6th1ICbo2DFAxRfFzrh9uEI2j9JboC4Ip1TkrMQk5xyp0MixEihwwKNo0FhXxfz29+h+6CglloDC9oN4/xw66DCJHnRTAl807DFSMJbOJ8WoJW3+ECX9qTYmiDYRNFk2aSBPxUf+LDTIzFp6ZlTSrBbMyAikNva4bCWwJZCgtpA/xTR2lCUAJaq5GzGfxZAlaKZaMS/FzWj/mMGmof7sJWic5bGjSUwpRWiYJf72b/nWHNQlS7Z4Hi5oolgIJWEo3XiFlFAl5BL4bqQ5yHGHxaGSjCQ+SEwcg9Yn4FJplkW1MSfYjdYRJFYlmKxJ+iKgddh9MW0M2CTV2M4lJoikJWOUR0lYYBwlPHjNEQn+noSMJI/CakChJcfFExjXgBh2gSUFtCtoQ4AJ/iWEhZQO2Nccg9YvhJ0pcwCNuML2p4QtlHYlu0zTZhwlliXuAejyqmhOJXUEqOhZ+h4kKeDuAddm0DbZ2D4lD5K5lPtoaRzkrOhEMUpjsHYRiCVmomocKqgWIuts3jQ+wI0l3fa5gNUlIyW19vuAyiXPJJQoqOagjPKgwiW19ovIyCURJRP2KSWLlKSw4YAk7OslHiS7vqcxrPTIJQVoXCVpIJkleST1JjKxUyWXisI5/vY2JbmUJSW19kMldyX4cM4l08CZmB4kI5jmMXklt4rO4ExAA/aGQe8l78VyMaOEXyTrkP4chfaDhF8kBLBbJWEovSVtKbwxI/YOJfklnIAhJTEobyX+JVe2G4QtJdAmdQQNqdMlWDiGVG3+ZIxXJbUlDLQ2yPDYXKDkJTkoMwyxHGBiPYBVbDsl/rE9gF3FZoSOXCIIqCiMXBgKQ0BspUEiTMkiDmyl6cZx3AhYi/EeaUA8TMmspcZpb/l5dhEATFQ8pSVFGQHSpU20wKh/MgqlIqWSpeUFNgndZuyprdwJdDnJrdwIqecpYNgwqfnJrdwoKQ8pJNgpVjFEuqVpmMnJZqWq2HBYsI7LKWrSjMhWpb18KKl8/mrSoimoqJl+JcnGpYNsFckKqRFSZ8k+qS9SgalebNiMg2yepa3JWWBqqZ8pwOAxpZKp1VKK/FopIOxSxL6lfqm2pdjsFSnKKQjs+ikJpdjspqX1mGcqdqkuIXNSbPgbyWtSBaW1yf5SVSnXeJh4xqn+qSmltil3fimloaVepXJAIalwqS0FF5Q2qdjs3imHKbzSnqVxUgDsvGxapQ0qhqkPUpopuCnDpeEpvKm80gWlNKn5pevJiKldpWWl18ntpVEpTqk7Zu6pDaWDbFSgfSlDpaJ0+CmjpeZsDPEGpV7UqynaqQpIPCmzpV/UM6WPIX/U0ClvhIJ82dSPpRwIN2w1pRSp2YWUKWulROwXpSSpV6VlKQGlX9SepVWlFtTeKYNYzXjyKQvJouBQZdeQoioSKdmlYFZaqYApyYWcqRml56X/KWKpXtSkyCipjti3tLmlZ6XqUFmlhGWLtMmlCjytpREAM7TgZUz+kxYNIDulGMzkqbl+rOwOoK4pIdi0ZR4pL8UvYJYpU6Uu5iOluqXK7MQpJGUfKTxlCkjbYhapb9QFpZ+lrtQbpaGpRyoJKcYQqSmZeCkpy6XlKoEEvqVZKYRlOSnoZfDgamV5pQlIyqmIZSUp2mUxtL6l5EJkZSCaGPGawKwWBaX1KShFjqlIsMUqLSlAZRNIJcT8ZU/So6W9KYQ8z6WDKV5lW3inMmMp7qV45t6gvqXTKaOlcylBqRmC5Km7hUCpcSlHKt8pdiBfyltmZKA9pZdIGMjiZZdIxGUHpQpIQKmjpZcp/GV3KZMpn1gEpMFl2mWQqWrGklaiqVZlfyIXpbZlekDxZRBlQYDxZaBl/0h/pVd+RqKvKZulAOaQqf+lmyIFioplo2CzQvApqSoucm6lRWVoqdplVKm4qeV4OKnBpUXIyWXOZWacr6U9ZWacS6WyZZ1gk2V0KWQ4sJSoIOllT2CrZVllgFyuZYRlbKn8ZUOsXKnBBlqp/aWKFJ+0xqX7NrQpZ6UH2u+AyaVsNJZlkX7znJPAsqnJ1p6ldinPmd4pC6XXmgZlBYwsfCGpB2VtnIJlKGUvZVqlO5zeqZelfzYEZVdlLCqvpf9lcTaa+LFleNarpVCpNPouqQ2ld2WcKc1lYDYw5fjlL2U45bqpmKmY5aN6IalSZTyZ3SD7+b3gnRYKaVtlcal18QtY/OY9qXnxLOV2YKmpIbiHqXTUu9RZqdWFDan3qTBkgHQlisYSrcoJyGLEvGlJ5mK68AmIBZB02Mo0CWtZgOaNqWBpcmWtqfUgjOVlaCG4Q6krtH2EDOVY5k06+uV2YBupTKZG5adgE6nc5VOpBuXDyvzlckAvesVIS6mwdCjIa6kIdHmEpuV7qeZgSkge5Sp8B6mWRQZgmukEuLhpQYBfqYAJNiY1FK60NGmMad7guamIaVgWlHkL8a+pmuACaSbosHi0jBJp3U7+5cepGuWydL7aZuWMeEpIquW6dERpGmkGeDBpsRJ2kFd4GsqwaCeB9OCeGMISDNmkeME8aRKJHOHlofxOdEHlAeBjvARpgngoyN7lpGlT7N7l0mn2RIPlDnFl8X7lhWDO5W58zXiCTHmpRWXrkBhprGm4FjVwGiRkIf7YY2AlxCXltXi6ql1IheWqeMppsmnpdMJMkGkH5SpF8mm75QlIWeUp5f14jsqh5RXlREWoeWkSlaYRKsJp16mcaaLg4mnfqcRgm+bsafZEtGm1gMxp2uVR5RPlzcRFqQQWkrpkyH3saBbb5Y/lOYHhYDsgzKUhAO5p7XTfuN5pZRY9Ch1AbWGoFSlgpoJVInZpaRboFbqQbWFIFepQdJG2qPxwyBVype4AAWkmyAZpYAJGaRngoWk1RW121BUMFS5pL0TEFYwV+QXPwQfF3WZAhmL0qZkEZMJcoPSG7o4w1mgtVKNoAhV6mimAEhU/SfnZNNhrQlPml3QBEBgecHC2ZAYUwhXpBjIQejktgLfkzh6KUK3Z0hViGLIVqRSigMruZCJmTN0WNfRl1Otxfjn3IkXoHklj2TpUo+j/EaFkvRQV9LXMBzSSWp2413T31P0SK9mSmTzO7hKu6iRkrvS/TldkhmRycJ7u+hWpFP+ApB6ICIfZHXgAjpxJl9kUQOrolkwFZDH0GhW+FUDkYFDPdM/oNohSeNWAeRUawuISakx/VInoDhV/2Wm4aRXlsTE5yhV2wV80SYCxFWtCxhXIOcUVkhU4QEwcHuitFVBAP3Sh6AUV6DnfoC30FczRFXUUoQDDFQ/MvCjoQGz0Lpmh4LTlFGD4xXIU7lDw9LigB8gCOXQoPc6yoE5kyuH8Fe2gaxU7FVnusfL7FRQ5rdQ8YsyUyYZ1jjvoGSTW2hqIExWCYjTo8YbD2f/oQXFaOssVuega5X5Y7fB3FfagahWVUHn0tMFZFGo5P2mUwVsVWjmRXocVXqDbFft0ExV7FX459aQQHnzAsmRd9LoVxEIk5H45Gpw9zucVVjlGnK3MpqCo5AzEdFC4BEe0vmg7tE829PLQJl454Aj/FasVfjk0pKPosJXvvkWwQDA0lVY5h5z16FiVC9ka9NNC+JUwOPwVxJWxmnSVe3IUlSk5tcDcAGdy2wjHFRZU17TslZsQnZr54Bge1xUZObYohE6fhuiUPkbyGKfkvmjW6uf2ZkKPsLL02pWJ6ChSjYIZOXaEbsK7vlJMU0xklaiV7hQ4QPKVDRVolZ2aGJXOHg6VDZpile9K+ICCFQkmpxWolVHcekwMBJEV9egn8HJM/pUSFQvIORVelSCVgJU3jNTYbpW6lb8VLwEolUhsoeA5OeVSTE6hTDB+lpXq6CbQ8ZUesDr0AJX+4Bk5USgV6GGVcRaLbiScTBQXQLiAzzmXeJycjugQufR4KKh1lewUUlwVlTiEC27Gfp+M/yEsNNWVQvTgst2VlBUzbuWVjZWUAFduNZUGGOM++8V4oYfqUVydRYI5Emozle+OtKbZ6gpc/XIRDIlGNzL39IIM9iSQBOSSxAzS1KgEYhJeDFrUIgSHlVIMS2gV+LuVW/QMmO34Y4xuDJjF744X9BBynUWJptlk15XJBtDA4mpODK0oyUJVOU4Ml2jJQu05VgzygNzF/6BCGplQCgS3oe2Kv4YUNPDkIZncXBP4d+isovBVfE6aDG62BsEMDFYMAGAKBJeVUGTqsGxCp5XInoIMpzgb9JuVegxIeO5ChLm4VUhBbXJBJvoaBdTn+LLFpTwRiD5ilCxSmfMwWAy0VVYMIzSUVWYM95UA8rxV7jhyJuy5XFVUDBYmAF7rlTYMc5U9FD1GwsWTQr+VW5VauBVC8lV6DBdFqTzNymRVAAxiVbJ6+5WYBHcidepoVY3BAgy++Oy4TjQLaspGzMWcVYIMf9hXcjWkbFXUdjE0jFV2VZ/QW3KWVX857fjIRh3qfFUaDNhkT5VCVQe8kQxdKAdFW7xflaQMsFXzlfZV2cHmZFBVCtQJxbAs0VXTjJJVn5VEVSZVTQWsqtBVulX8pJD6CgzrRaRVC5XKJhW5IlUPPv5VElWVxSZ8VgwbrlDFWlUhDORVfkpSVVYM1lUqvnVVdgz/lRc+aVXnlVEmL5VT6mgJoSaZVYO6vlX5Vdp8kQw5VUZVb5XVSkQMW/TtVewM0UBHlRFVVAy2VXc8MVW+TnIM2lVuqAAMy1XlVbJVOWF2VQ9FgcWuVSuVGTRmVV5VpgwdukdVzpatGExGWMXLVXJki1Uqvq5V/VV+SkuVxhCCDNlyDiaPVVYMVoAbNGdVqVm15kPuJiX4mUcO9Sz0xU5SCWC0RKrFBoStgg/gzMWTUpaoNehQ1Zai1JHW9D9yOODvqJxyTjTDfs5gUTggVffZ+xGhOPzFwNUY1d+GGU741dSRMWgq8n64QvLIFK7yo1IE1SlkPPK0qLWooNUpTtDV4+CQ1YHFflIg1WIiP3Iq4HQWgNXmxRaZBNWI1VXBaOATeOYmO/QtYM6cf+T2xU9mGPLbAIXZI6i8GSauTzzJYtv+CNVUDAXZjRGw1YHF/6L/LprVVcH3UgLVc1Xj/gjVStXVNLukf+T7RcpyPXKy1WEMNeRW1eLFh+gSNGbVrNVVwX0g11y81YHFo1Is1R7Fa0K2oTTcJq5UDHdAdvK61ZXy8NUmrkTFdIZq8qjVEUwgOQLVJtVJBAzVwEUKvkFSHpzW1TK+ydXu8m3kqL6FMCjVnNVVweVSvpzO1bVVChQIFa6RogaLxWtAtpFvQjWxHpFl1avFFdWo+JWq5dWoWWsOoQHUkVXVHF6V1ToEnjzCkYgBQ8X11d6RtdUiIN3V6qU8FVmG7/TUOM45doyl7j8M9jmd7tzuACjmOfQeDejvDOWQv5VBDGY4iNFijKz0goHWBEKMbqgz1bE56BhkDAw4stEWcsnog8in1cPo59UKKDEwlozxaKcB6HwwjHbAuwGn5NGEQOZvAX2m5B6LyIKBaZDXGgGS89XtjD6mTDjT1VfIcVCuoOD5U9jGOaSm0UAT1UF8doxmPFfYk9WaaEuEBh5vAVemI4SCGGg1eybgJH8Bl9UYNRboC9WP1SWSyW4GKLfVTsDf1WaBeDV21BQ1vvZkNSOEJDVmKFQ11SCI5oQ17jnIUkDAAwxgNWOSVvRv2GMwRYRftqQ1KmFWxgw1cSi/1aZGPDW6OLIITsZfAF8Br9XMNQGBdDVEoIbRWDVjon9AD9VrQHkglNIf1fh5DrBT2GI1ZmZjJRvIUjkT6JYgDDh8Na5GMDXcKFw1jEXHtlP2UDXP2IyCAYH2New1MjUQOEg1/aaksLg174G5piI1hDUzplWmvjXl3DJmP+j5iF41iTn2Qhw1bjWH1f+SLDXl3Og1SjU09ng1eSBqNf4othxoRd40S8i71bOmhjUbuJvVGaC6NRvIe9gILFvAJ9XeNeXG99WpNXA1YlJ8gok1fnzhuTVERIG3KDvG4nYVuEw1YGIKNdE1lcDP7n41a9V4MJA1SLA4hSU1mTX+OaJ5ljWVNaw5RYzjRhb2STXn1BvuhDXxNamZnDWdNZZMYYwFEAe8xOTtDJjRYcyEMC72i9WMeeHovozONXgg3TXtjFamE+grNYI1nDk/wK413ciR5pvABugyuIo1a/S07io1N6IpNaI1cjX1tGY1LBSMChU1cSgzNYGQuzVENTGFsTV53As1qdAdNQs1GLCyNVc196KBNatAQjW0hQc1MTgJ0cCMr9CyNQs1MlyQtXsmTRTsgXc1iUYW9lI1foE6aFP2+jWQgS01s8jWNWS8h3StNUc5gIEktbOBeTU/6PMw0zUjNeAguLWB9mk1zwFXdKL2MzXotVE14LVNtgYoXLUZuW+2EShZNQq5tOJwjEy16KA1hiOBRTXKgYW2DrhUtb25LvZktTYcYrVTKES1EoFw7mg1x0Y3NZUBj9XzFZlAIgiCxnzAVYEgUl5mk/5GgXUR6Bhm1COBn8prpgIeZYFWEF7OQEF2ECCFXAWzyL3UvkayaEvI28JUUn617Cj7aNnGXrWCKFMRbmaD0OgobhaEQvWYbYGksEkg9rVgQZa1KqanQBa112ZigBsg8AyagSm1drVbwD2BGbU4gEcghoGbOIW1ebWgKMm1trXhINrkvvYaoC501ELUOD61S6bBOIH23lhxxvCQgoGOtSqm8HiVtaBETGh/AcOwLdRtZZs4mdQfBd6BNrV/9JXA84FiKOeIjyot1NO1ZYGqOTyg5kmIKPbmfGLBXl6EICw4oP21b9gEsIm1ofzJtWW1PwU8gStoaEUrwNwoe7XkFNXYFrVVVTWMGeVGgaamuqaQeF+BHqqsRc2lpEFztXe1PYGDxRY1OYCTgYfkWEXvNS614Cxw0J21hJKZtXpkZ0EutVx5/mYvtVW1kxl1gbTiJaDVeAGBAbXFlNJW/7UgHCAmoSAOtb3O2HUumLu1qobodUzKm7VIdS/MbHSrtfagRHkUdTK4a7ULxkNA8bW3tf54A7UJteQUBWi4dUe1s8zptVNpZdSplmWBlpLUoDPgiHVaVSXVrwBdjE2MiFmBRU01C4zLrgOVhbyA1BJ1MELubNJ1GziJLAjJts4LjGl8uDSUan6MUT4t1VlmI4yjYbSoDYwKdap1AFlydWegVsgdDLJ1oix/QJp1enUYFXGRU5XAWh64EJUm6Hqa+oCGlV7FVjrYIqGV3nX/dHt4U0r+dZLE8hXQGBKSShWJFUZOaKZG2p51CU5VxdoVzRVhdcF1ERUSFQHofyZD2aEVYJLT2Z70TXL2EjE5dhWI8qMcjhXRuBqVNsVlFU4VQpXEYG/ZSplYGOM+UViWFdPo5uhNJtPZoRWCYrUmTJQBlW6gCYExFaF1xkLddeA5kXXGQvpkc2jFuFmVGxIb2Ya4XnWO6PV19vFnISyS1XVdFXN1ZXVtaOUVCU5FdVUVqRWNwXl1fjn1FVF1CxJNFb11R+gRYG0VMxUygul1iWDtFWl11mjlFFaVDsyGpiBA4xXV7md113VDFdXuXTxwpkRA7RXOMBswxrXmJuQ5bxUO1T8VyYa7vKQej+h0ZLqA86RZ7kLIhaYHFWNVGpLA9bMIcibGgDD1fxU76JAYhppthtXuRLSlpo30TxW8NGCQrxW1Hk7o4TQkZoosExWn6JsmjfTBsqAYIBEKJrEUiPXKJkxQYJWQ9XD1TPXaFSsA5PVA9VY58JU/9Fz1ePROlRVCSOTVgBsVVcHI9X45OJV61dsZ2JWplbgEhtARDCeww8i89WxxlJWC8NSV0PW0laaVgvWqZHj0bJUBaij1TJW+DGL1rJVn2comoZwxOSz1svULoPL16fh5lZXuGaZEQAz19AxC9QmamvXKcij1BpUV6LT1XT7qlVNVzb6FFPMw/BV0IRmV45yg9dh+wfXfXpQeFPX+9fm17w5e9XS+IZWUMa2w7ybkQCKhifXzpMGVMfVyJmOpFpWilZH1oUwFOQL1evVEWAH1UPVc9SaVtvUstOd1HvWH9DGprYCidYduQ5X0nN14PZUVle0+gdmN9UPVoz6jlb2VR/SyoPWVY5W99Up19UAtlYvFzfVydapcFZUs8EP1bqLvxJP1DIqTldYRKujGTCQkXuascamxwFgFcTN44STE9I5xW/X2HPyM09GdwPYpA37EBCicaCnP0M2xCJyF2u3wI7GwpNOpleYT6Dt6mkpeCJf1DRzMSif1laKHeiQkB/XP2F/1iiTh5jexb/UwppT6iu4QwJEpq/UjxNno6/X8MPjRphzmJP5m1LZ79bEcjjpc0YxSUFhw0vTRs64oWJEs91GAnAhUWv4f5EtYByR7jJf1V/C0WCQN+FRP9USCH/WGHjMcxan4XP2gf/X6JM3Y8DU+MMupp0Q/sXQNdlgAJDdmhAqVJDANRiW/VXjFe7m92JOEqnlMylomIFLqZoKQpehiDe2+CMCWjLe2yCl/uF2ESg1UZrMWjIyGOKSEamBJJvhcAXleoFPZ2YaeyqSEEg2U7rj2cTEzeDB0Rya+eowk50iGDTg1kWampjSM12bSDRoNRYy/QN7SUH4qDQaM4fY2ZjnAiyak9lRmRFBKQnINIXloAUgYag1hDdQ560LjeCtMf0BL1ejy+LHgELXuB2hbMSEZSkI+5Cw0yIS0lEvVkQ10WOENmjTg+GO5JTmVTiKKmVgxgO4NtOJYpux+0DUnQfIlTg0l7t2EgxwikLfZs4TS5u257gUBjLUMMUoJXCV44QyEeAxKJQ2hDfkN0Q3DDVFQIjn9DXK5QYLspocMK74KDSOGVwzwsR3g1qZtkmPSTGaO7K3udQ3NedxmuYTwQF+myw22YqpqZQ2BZt4NEQ1FDfbI89mpclkN0swiimsmeg3pHKGmakIo9q0c3TS5hHkN45ZERpkNJyYFDc8NdQKIEASmX0EtqUuCjIx7DcjM57AR0kcmA37hSuCNtQ02DS8NwI1FjMMNvfg12Uf0mOY+HBHS9fXVNACkmDYoyRI0AKR8yRZ1eI3OaULJ2hh1PMSN2nZMFRUKZI2/oASNjUWJPPJ+JI2hRcBi1I1EYGp2csxsXgyNFI1cFSGxGqVj1aQsq0brRAWGk8ZkylhGJWFAJoKNHpINzEnMnMa+hLfMAO7mKoYMb8wwTO2GxaRFhsUOXZLTVQfMgagDhlKN08xERv8kF4apqE4mGcaO7ru8SEaXZCnGtkxLhrv0m0aRLOuGg2S2ja9GMw2quSnG6PCHhok8XEbfdF+G0ux8RukoV4a6jQA4+o2ajazuS0YVksPAL4Z+jfeSrsyH9F6NfiZLzI9Of4YOxT9Gjjo7hk25tcazNeuG8Y0jFXRGvfWZRkzk5o2J0EqNVKjoRn4RWMpLRnbU28xPzNqNkkaDwgRG1Y37hObMqUZGjWAYho1hosBS8AxcRlaNz6YWjYxGdo1jki6NvY1OjXBmHo2Zxm6NmkY+jQVQO/gqRuq+JEZR7gpGX+jiRhKNskaPzKA5oY1kGJlGkY26xqqNy8yxjRE1lKTpjWONITXZwH/MQ40s1IPGciGBRnxSaY2ARl2NH6ZZjcTkTsbRjdPMOGaVjRVR5Y2aGCeNLkZhRseN88xLjZ5G543cId7SIHX7jWnuDUY2NU+N59RRRsk1EUaQTUWE5GTlhn2NNjWNjUAsAziRtchNIo3awONGeY0yjWggoGCrRvWNxpSzxjGNusDsebGFCMbPiD/G5mTILIhN8yCNwJ+NzEZr9MKNa/RATc/A+czETahNYlK4Dt1GEyhWYq/MEY2fRqqF7mrtRruNbZT3jZuN+XmELHIha40NZHAsS424TWRNOvjiTYRNKMZTjdtGaCytzARNKdF4LJpNivBDzM2N9VA/RvmNIoH3jbeNGrUQTTRN0blsTYTKwEa4uUWGh42ytdeNciGnhn9GP41ELEpNWk1gJnJNH2S7RoGNN7mgVZTGOmyehXhN5E2fhqM1Do2FRvZNm8ADjd/M7Ea2hT2N38yXjbRNNo2FRqZN+MYKTQDu5Mb+TQHGzY0Udj5N9Y3UuehNamwWHLAs1E04TdW5P4b1jb91X5DdZtUgM8DSRqEgosZcYAFN4TlSxnfAH4YxID41N0b2+MrGjD5cRi1N+4RGRHxGUVyiRsPZncYhRvGg43QJRk+YZsaMxmYshUKjTS3AXArHhbQmk40IzE7GaQhcRr34jSA/hqKwnsZtTdJR9cZl+QFNW021TfZGNYahxry44sbdTe3GhcAJRuOspegroLjG18blNQxGylEKgFHGzCibTfUgobUrTbjRecbvkrdNqUZYvEpCBj4uxrtNUcZGiCnG4M3lxhVghMb28BHAECjtRudNuqZSYKtGguw0RUtAb8yFWHrk1LTdRhz4cE3g4atG9si+tYjNI0YNTZG1sM2FRv1NfGxPTR1NzcZEgJnG903lxoNNk43UzexCNsbW6qLGk02pRsTNS6ZvyGAm+M0WNfzNh0Y4MUZmmKRTTUuoNEULTX9NUjG6pizNf02mNB0GYM0WkLuUItJ/wB34ysZyKHjNKs2owNRUF4ZMzZiNVtQ4JplQvyxGzRwm4bJzxVuINhiXxhIsmCZVZnaQHCYmzQjJZs03OBbNDYwOza7NiGEIyWBSOCZuzdp1Hs3n0XbNXXFtRV+1/vSY0fnGtRD0ZOHNmqbYYBj0acCixkdke3TFAb617sAawCRk5FXJRv+A/2TEGVxSxxLndMnNfM1MENZkHLGRtWhw3kmsZE88R9QBEAgqP375NR0iZmxUjrOmec0qbDfQaEUfNKs2RbLvkqnNP9aU8BHNz9Wherto0qY45igqubh6ZLHNUXqdzavMc+wY9JPNJCyiZKWJeWZQRe3NizZXMfo4Pyw01hgZO8bTzVF6x5DmBiAhFhA2NqvNq8yTIgF6s83oef3NREDIKOfNSc1Hzc/Ax+BImTNOfk1NIpHWstFqRSfN9hGNEN9VxiXCDQyB+2h40uL0fkT9jN1SKsS01UmUOESB6AAt7cb48OXNik7txorWZRGALc8kyVIqxBRF/6CpDigtlc0wLOtAD3SJ1Zpyf82R1uNGJSBoLZs2GUYmNfvxsTb74KM8e9SA7iAtzaHr7hAt9sR+PHPNcBAnLNNk0pkXzfIUrYQFaMAtT3QseXXwfLawLTfGvTg/1jNGfC0y1qN6bg7Dokg4v3RDQP3GdSTILbwtQi3yNjEs1GQkLLM2WSxsLeaUBCCCLbrNSPLE1qItSi2fwIssuQ7nQFAQUeYqxI2YSkLUgKXAp3SALZEs2i3fwf/YkDZzNS0sz8ApEOwqgkV9RgjwDHzkkM+5yTYwtmwQMXn+Lfn00UCGYt4tRRHfnKJN7i3nehpo+XmFaPYJqOZPzZYEii3qeSzQ+i251WggL64wLepF1zV0wJX0sS2ZLQnAMSyRLZkt+sBg9KEtACa0NuUte+DYdTI1/vS+La15eS0YLZB5WS0KxCVokE00ICYsHWCYjRlwbYwKUHgmGUX5cn7ICdGWzeScvS1+yCIoa3lDLZFAIy3qddMtlUCzLdoYZ9B9LZMtcy2zwBMtQXFzefMt5OhDcdyNVhEWejXIj24fdO6IrnFt7l9kJy2fbm+A9gkXLa0MVy3LWYDux1HwGO36MGJg7nIYRcRZAsMMZy1JZD9WgB4W7qBqKh53LQyJTu4XPpeJPcWOHizuV8DH6I4eH+j0wDlZA7FU7u42E/rB7gitM/ph7pYeAe4J9OrMTO6iJpHuD8A74Ozu1jixNr9YKe687hLkNy1EGILulfoqHqLuY8DErd82ue61ZAdIR1Ha7uctvrGK7k3u/2RDIi+xHK2wrWv6jA1fLYbAJO767naJ28RQrUAeby0uymCtEciUrdAgFujxscCoeMRAQBIeER6yrTnuie7h5EUQTQWgrUYt5B647l/AEvL+7jCtL0BlLbBx9O55ZFytte56rYbkFe6x7kStxe6CHuqt/wYS7qnuvK0PLb3u5c3krUEMIq1O5M6the5M9Eytsu6l7gdRrRo2rXXurmQWrZpy4PmMSUitje5l7nU+Qq1+rV9kR+FH2MoM3q2LQNQe54DlzUqtqdh5hXiZrr4iDYct5+6oSV9RRBgkHnt6sFC8USicoolmPL7Rf+6ESUgeCMBJib4ePLauiYDVR+6VSdAejThFrRRJatF07pYQxa137jygXlaMSSF2t/WsHphJ7+6cDY2tNaqOzIgNda1iFPPuQB4drSWtX0znSTWtUB6oqLq2otlwHmXodEkuHgoeuSIFCacZxu7oHqN6sbxYHuAeOQm0JvgebdH1rcQee63NrbasAYnzUpwYX+5trKzR5B4d4NOJva2cGK2tHBFPDeOt96o0ATOxX62gSePR5/RvraLZIh4YGJBJj2EuknutoB6OHldJ660yHv4eotkqHvOtYonQbWYeBongbUYe/vS0tPWxuKIEbZSUN7Gj0aIRdlDorVyJ9SwfrY4eaG1trUhtaLb2BA6SaKg5CYht++jIbSutwtlbrWKJyq2iGPYJoiYaHtns2+7aysytUAn+Ce16TO7ibd+tlG2RrVHRNapKYEvVYdFk2S+tGYQPrTutwQGlicxt5B6sbRRt1B5ygM5Jna1L1bEQ+ImybbKNT9YhxKOtHbEGbSRts63ANZetohGaYOSMp60RxsBtdKabrXy2hG0zscptiYZObTHu8m2+bT/umjSMHohJz+6YjWkeXBSFHvAkWR5uiUzJ+R6rBvEe2hgRbQltyR5MjXkeER7MFFEe0W12do3kCMnJbbYgqW3lvPltsW0j1c51hy3bSAachgLeHtkmXqCVbWtIhgH6OBVthKJcwMmVPmp1bQOErW1tkj6C3KTF1j/oysCgXEmMBWTXJgBcl0gNbUIY4MB1bbtZzm1yVPJgl3adbZlRrAKiGHJtgwDFnHWAJBiJYvyeouAsGGsVtjTtgj/+OKYqUZl4+23iJieRdmDbbf/YfiSmnGttDxXpQlOcboBMyjMNM20DZegQrW1Nbc9tiBCxjNhe3HSm4ENtl20wlONZXya9badgwtmoZO4ylnhugHaQdSZ7bYJp+iZPgvLgBm1nJqttAO2VDR5Ue4Cd6I0NT22GgEDtsSaY7dr6yOBHJgjthpx+iNWU5CjdnNY5Kw2VUQiUDHUzDQuQouAgRDdtQITtglE4O20zBODt1pws7adtZO0xgJGMf22CKtTtliZfbaJ0wBSk6NHMhO1FyMTtwSa1bTdh/g0dJoLtCkhI8aVk+KJXbVQB0wVA7b6AkO1g7fJ4pwyALYzt02W8YDrto/B07TDtS4RFNouZY21HJhbAVnqK7RNt0u0gGCPEqI2ieNeapu2owG9tPJnO7SWSftQsZNVgBu1usNeZxu1suI7tcfQvgoiNzuCB7V5sB2S7bX7tLW1qQrKidkR/NmzWtmKu7acUCe3qjm1tXMRrNdbtUu32Ea/gAYzg1jT6eWbxZC5CT3IUTNVtrya+7XHN+LaVorrtGPQ6DQWNpe1mZObtCKJx7YT0we3oGDaeZcqb1UMmau2E9OjtryYUUW5cGe1jJq3tDe0I7aLtlW2psM7tY+3p7VSQUxW3bT16Oe01bf3tDc1/uGMYae3nenrAiuAE7ePtsgiLZJs00PT67d7uK23a4f7thu0q9FJcoO3V7T4sjuz3kpVUb8rDWYDtrZy3jBftNFEqLXOAkybD7WDEk+19Mtvtvc6wRlnttfRWQPhUK55AKgWMoWRK7W5cYzDGlbFCj+1xUIXtrO1VxMY5F20DkYpkiB0u7aft4fQPuFPVlO2k9LcoUB2k7cd0dzamrbjt3MSAHb8gNu3negSo1qZJ7R7ys+3kHRJJCO1VTYsVgpTAOISVPJmZ6C6UcYwr1oqwiyaLyD/WpRT3krwdeNaq0COGpWBcHSaAPO341uXNta4zDTGE3taC8FfN93LZ1uDhVB2E4pHWXsgi7f0NDHz4FAod7An2CdIdAu0s0BU24h0bbY6SfB0WsgsN/a1PnIrtI6hwDoRQmuhpJgXm7NZToMjgJZKCHYjlYB3/JNKVDGyk6K4dlh27FAjAaB0HyGYdKDlIHQboFZzQoBIdp7BaHUyyMw012DC2tUg+Hbbofh0zkCXoDyas9D3NR6BeykkdXh1DFE/g9owZHYUwuYwl6DsZMCDmjVEdkTZqNSOGcR3jNvQQWR2eHRkdZSABjG4dv3hdInvN9R1cNnGgEh1BHR0dl+gmHWEdQzbj6ALt5R2ANuvAKh3VHZRsrR0DeeRBPuSBbB9gc4DhHp7yssnzHRZ170CnGIA8lKQLHUDg6x3LHWltVs0zHSTJOx1fQsuBBx0EFc4g5EGrHR+i7rkORVB8OXYbHaVti/V/skZGumiUquJuw1jAEJHSC9jnyEeAGP7mpRZhQYlc0vb+oiZcBGvQ3yr4YVBR1czeSSls4FJvHdd0CWwTZHAo6VI/aF1srx2YFEd0oKoond+gGvSgqvBJEJ3T0ksiUfgKpLCdUJ2QKD5SE9RpmBlhRLbzUmSdcmodyISdtNTWpYbGqugAYsnYJmHz0ZidntQvHQcM6MCN1Jyd9uhILEidrJ0fibGFeOgMnYDMQNH81GmYiSaK7h3REp1GJnxiK+Bs9AlsCWHISfyd5NI5YYf1tf7t0mvqsnG6MXalYix7UarGB9TknQfGPujvHU5EJWHL0a9S1J3MYS4GCz4BleidFnKDwhydnx3wbYqdyJ1MILmtf1UFhcJE2shmnTTm0mFBieXU5YW0LFBRfcDVhSGdQYlfLGzUxQ5wUUWyBni1RkRy6nAgdlhN2Nh5YFaV62YUnYkoaZ3BtrYUW6zuVDqV62aU4ChytEVc1L9kFvgVVNH0EuVFrLMgaJ1XZq8dqTmwnXWd11FJnaN4rvD26BggcnZtnY/I2ui1nV2dQHKwHKPmfx07NrqdNOY2Ya0MRICLBSmd5Uy7YDX062bwnb8gwBRYnW7Q4m5ZybWdEZ2PDJqdekAxnSDM01BZYHRNJ60sxkGAkDaLwNAeip37UOBhu61nnXwl89T2BFnUgZA7oPUJlZ0UdmKdTcD0hc64u0DN6L2dQ5296COdNuYrnaE4eZXrZthhQp1+nUBdhsaT6OMQxuWgVXdMj2EbttedudGwXc54cPD8rR2dUF37KPfuQZ1aFPudCh4TnWx4zsBwzL+dy50FTILwwxVVRUVujh6PEF4K+F0YGKBdRF1dhGGdg50BnRCMm50GYAWA0YS7nfrg2F3kHoedsEDHnbmEPF005vOdJ7F00WzU9bTxzFie9p1NnR6S1cBHnX8d9fWq6AWwGeCScHlyeIBK7PXQJsnrwPg0BJy7mDLsEuyFFo51VrFhhmpdHYzw1EZd+ux33HJ1Zuza7Hp+4smbINZdRn6GXf2Q5l2agvAkauzOXacdKQC6duaY9l15cjoQFuwP4HFt9KL+XeLAF6yaXYrSfXaUjdLJZl1KXQmgtXHm7DFdLl27HRbIUVbGXYdAeXIJgeZdP9yWXdFdiwDqXfAkGV0xXWld9x0HLSrorKFt7EhknTku+Reu9mQfeYKhnvx+JFUQPvkV/NooGexVXaco1qI5oddS5V1X0BT5jKG4HLKi/exdAhf5yyipzST5uaFpaA84yewI+VTotKJBCSd5A12N6IWhwAEVinJoy3yf+eQoGjhNXdCauhTkoQuhIRof4NkoN3nUHMwEZV2j8dCi6Pl9XSc6EqK9XVSoffzkHBmh411D7Oddr3x7XTwcj7C6KP35zprXXcie3fkwAa4Q5fKvXaXckyLEylL5bPE6QOVo0114ulvsLqBK+Sb5DjTb7JS0jAFTqQqgjB0FrYiy2AWKYrgQ0sTDXY7y1/n4BcsoWGDP+V5hOWjd6P3sZAUXrgjoRgVwSBTdKhA/+TsNObr3cngFlhCfGpjdkAVlNP1dwgls3XFh52iM3R1UcAXyaCoSEBzY3X38ssXzIcLdD4Sk3VgF+N0xYtvsrgUyVAco5WitSFVhJex1LSDExN0q3QnAat3UBdvYjV3KSJw4myjTUM+pnGGGIgrdBsXk3S7sDhDcBS/5OWjj1c/sUWG0mhM2l+wiYRwBzzCB7JIFJeyU3TIFSmEe3dzAPbhqYSuEtt0/+flxWYSB3aoFfoKeARtmegVFYV9dnt1dSNgFEDWmBdLdDejP+XZhX11e6BQcNgUR3dk4gvn2SEiBtrqbXR/53LqIII1h1t1JGo8QlmHq3Yg8qt2kxJ/5Q/FjVLndv3GmOFTdzN1b8U22Ud1xZoYikoAKENLEr3lYnmLdct023SC2hCTYBV3dKSD19REFpyijwMUF5BVfGlHc6QVl3LPdqRnJyCkFEKJL3bBZqsxrYQsOzbTT3Usoq92jLV10CQUNekvdjskL3Ufdh3mIub3YmFDOHEbIhBDSDJJJjQT2yGk+yLzu6FMNiz7TARDA1QJptWoK0I0DkXy5Lu7ADeDWJgqfMPCC58W/ILscEQSP3aHkzxyNBJ1QT90dgcxKX6Jv6Mv1sWZf3aiBbA1CgmbYAEHQPQu57H6mPrjFTnWAgEwd/iDsVZ4xxH7pgR9EKHkGJlyB1Hb6pm++d9g7xGG++H5cuWsxm77Vuccxwn7dTUCcfH59PuuVnjG/8PS5GjC/ufWkywGKOPUx+HAFvmw9J76cLDigM5VIflQ9TDhGmAyxOXH+vr6qXD1Pvu/dQLF4fi2+0FUoeWQ90wGnOKyxTD0aVSGmA76wgdlyCFQjvvICCOinyY3I4YG1Hgem4n4KOBQ9+g2OPd4MJWAPMdtAlTiYxUh+QiSRjNA+NaanvguBhWgnvtB+8MigjscxroKVov494Ur0fhWET5VIfhz1dozG6JyxyfS33c7Wuj1GPQEEMzHqPTic0IlkfhyAt93HlbQ9iT1iUow2192xPc/YddSasfB+laJVPeCxoT27IGU9p8n8PZpyRT2Pub49iWJw2ExAwoQcPVk9Dj34frYKN/YBPXo94vhksVKEb762CovYIaYjPcn0MzFLaH8+FEEWPWNi7RzWPS0xQiDrHN2Fdcm2PeDU5EEkKsIgC6YEnHs9ln4OXVlmRz0+sap+2hituMc9CMlXPYZ+FhhnPQc9Nz1JcNc9lz3PPXc9xV2bBs6YASAMbsqs9IbfPcf6nc6SGj89nuSHXIRkwL2C5HX6QL2pqm5OYL3QvZI+HQaUFHhO7+pa4nQGBXnOZF+ShBQtTkxkGL2Qjkte/z2aQVSeZdTqDMi8hL0VRGf0xkESaul4OjnJQVC9xI5a+pTkPz3MOD5cDL0WqoLZ2L2Mva5BsL2WBtROhGSM0S0eySBFbg34h1lMZCo0J06k2dUZJiCwOeK9dJlKNNFB+hoGPufZC8F2ZP/IOrmsovbmfkHpQbS9Qu7CvVq9uo66zrq9Zo58omfQVo6W2UcZ9ZKZQSI0f5nn+PaOW/TDsMIMzo7KXgK9nPgtQbJ6m7wjFWA++L3SjQB57L0BBobBixkfcINBar1sDVGOcuWuveGSWO5Kvf0KnTTyZPy94dSoBKNB4lUablfMip4svetBDeWKPp69gME+hpm9T+62vQG9R0Fcol2w3QYPwSK9YpLEQjy9MCw2ND2OaVXteAX41b3ymSIOIgQtjv5qTQGjjkrBrWR3kkvufr2qDEm9ub2VmTi9L47ealS9oMHg2VvM5xLFwB69jb2wwdaGyh4F+EjBsxmZbhXMKE6/6mW9CHVTPEW9OMEevW69/B5eDMa920EndDm9csGqDHu9PGKIGby94sG7vcG91PLVeSK9gQyCwWsZSjTQTuDqlFKRznzB/Brjvfe9W8w6xkSVQnVTPL292E5jPP+9SL1fvTeV3b0dveO9usGDulO9TyEVvXFg4mHslbv6CL06wSW9D70HlWB9axk2NNLBl2o2bof0AH3yvaxSoejCTvIMSH32lSm9cH1sQk+9dqqEmcS9eJJADMN4GzTewZm1Br0aTsS63pKBwQ2Yqb3eQvvB/BrfvaZVDKK9vbHBAeq9vQnB+hrDvXD1Z71jvaFVlr2QdSIEBcGtZIP0nk7AfbW9xcFhvbRSPtXEecq9klUcfQq9Mo59Wah9JFVtEiMZi73MNHT6NYzRvZHBTJmivb3BR8EcZIK9Jn33avm9sU7gDCe9A+hvvTm9U8FgGlXBhJazaji9gNkSai59IyLyasJ9BXk+vc1OpPq6vS9R51W9vctOI8QGvWNOqWQBffF9TJnSbtYmOr2X7qi+ob1HatG9MX2Pwfg9dIHRolGpKjzqMiIEgCHiosKIB07rBeKiEu252aQ+SeiyVXdOALoj1hAhld4lai1VDX3aotc4bEKIIYhkwzYQISOyxH2XhCIEGCHealuKbEKozls8QmQKwsrpxKJxkGf0JCH6og/uGjTzfVBkp94IztN9COpPWIXZ431HPB9EzCHZvX6KoATLer7MPATyIdAMMegbNAIhsnoo6RTOd+niottk3dkomerM9r026eJVnSjcIaZ9WKIiBJzOZX0tVWohJWr5FbDOKTyDfdO9/Wq9fTzOHNkNamD9AP1WIa19Q31mIdlkiNhRjmMFFKKQYOtBTiFXfXqSkARuIZOKnugtVY3OxH2ffbHOiH1vfX+s6Wptjj0hL1k0ZDC+ESGpITMi5333Sokh58rF6BX4sSE7ZLN9KSEWnthGGSGDPJ19ic7bBT19eP1RztlkwP2+ITO9o32Jzn1Ksnp2RrLCfFlHPGhOtSEevat9oQZ5zhSiJHi37i/6F+gJwmXOUplPfRT9sv1lfSbOkv2w/bHOh/oC/SeVmyBZaiL9XyGFjmb9HTIF3sb9TyH2/Xd9RMWcPq99127vjj5R0lXXfc8VQ8719eKiflBuoL4+k8zQoR6RNnDAocKc4AIX+PvdxJFh/cihFOSx/VH9HpET+uH9DdXJ/XH9Hz27dvik2oZ0dHciA2aXZrn92iHvZroCIDYTZkX9ZO1p4H0h1Ob3bfPkQOFyKuuAkRUeFroe64C6FZR8W2YaioaAhJWmfP9mCkgF/cdm+f3rtudmSq2RgGSV6iF3ZoLIktbo6aDmwOC9/UO8Zf0SAqcVX2ZATRICNbVfZu39r4BQ9MDmw0jPZvmAC/2C5lDmO/285m6o8OZk1tfpfub64MSWHsFU0KzggTSE5tzmboCbFPXBleaHYWlWpOanBlttlhSU5mL+J3hOCTYZs2bf/ShJdhZv/dP92xZGwUL+z/26FDZB/f0V/XTOZeaGArv9sir7/WQCK/0YFjxKkYAb/SIZ7Q0rmSX9hhZwjfLt2AOq5v39dA6vEGP9nWD5CcHOT/2zbWkUYU5T/XpAN/2G5kADtANT1kDOYAOUAxHWgAMkA2gD4Fz25sv96FzO5j39+ANS5u7mcAMjnIaoF7QzFgp8qeZbeFZOduZH/REqEwmAA7HmR21MA+7OvWbyeHQDCeayA+mZKzRvwq8QZ/3lgK7kvuarKuWAgSCq5pgDI4CnFdVOa/3yQPADxvbX/QIDtApGSCLWA+4/VZHeBD0LFWjdjEGP5sSZ+5mU5kytANIVmVakon4lmcPmFmBU7RYQN+YN4TmZltiCpPoReANgeETprIaQxHAGyOkZYD+sDxDw6YPhz5nhmYvBM+ZJA0MVnby94TyZKYUxAxAW15pzFtSkp+ZYlN+ZF+ZBA2w0C/bt5vcRPJnlA14DX2UZBq/m9uBbeLSZlUH7tCSZr+ZnEUaZ9fHQFv0DeNbVAzs0pQOEUMUD9ryFA++c/obdA17tUvqqGUABRu3hA9AWmBZ87SsDOBZxA/UDGOYYNqyZgubDkhMDmBmJAwyZ4xV/vEtybpw0hSIZsBFVA9sDYRab1qMDEhbnmTH2URbnA++cRoy+FoWMuwPBmZXhnhammd8Dw84V0VXEikDiFvYWLJlymXXOmEqjmQmZVhaDmSeZgeZkETdhRLif/YCDmXgBA7oWXhbBAx8D4MhdA2K8rwMfYNEDjwN67UiDpoD19VtOVbxI8SkW9RZWelkZVIMUg4ChXOQgWXJ1ZIPAWeZ1eRa0gxBZTIPcpNT41xDT9SUWDIOsg61FidlyFM1gtvWS0PiVIRS7Fce2IdpC9NBkj7WYhin0+MEI8B51WRU1Nd5afRVuwi01yYa7dRbONHAohoRW9h771WCVm3Vuws/IckyCYD4VcHCCFfqDSRVKgzRM9VBHdLKDghUucNSVouhOg1rx5+iqgzH07RVigzE5sXXHSt40jhXGg+W99h0rddUVGMJitV4Vk3Wowhl8M3WLdQD9BujBFbNkjZiO7lEdaZrOgzvoloOt2eEDGVHT0CKGFPQVzKmDc2iuddVKh1IZFUUUooMxg3maFHY+FY/ChRWxFPF6m0rL1WpMHCL0lSU1nxVegJKDmoM8OYG4CBieg1jExfTEQrmD2Dk+A4ODcoMJmkLoAsJDgzk5mfTEQjpopTnJg7ODGg7F9bN1Js4BgyiGXhA6lWPUIYOIQCqDEYOdFd6DlYPD2lYc5+ilg044j+krFSnA4RW4Kt6VemRjg1DkzJWZg6kUloBZ7peDl9kldenCuh2JgzV1jYPJ6P4VOXWRBoMdJhX/g1uDrhUMZDWDbYNVFe+DGoNLg1Y5z4NdvXODoznMla6DL3UBFQD9U4MPdcBDyEPDg1BDAEN1g/KQYfQFg4+1TvqIomwe29UpGp8UVhUEsHMVeX3cFQf5HgOsXET1vu6jUcD1IvWEyil4TgKR5vwV33THFZxDWe7kkDxDwJWZQUSAFxXU9ShNT+Bk9fXuYhHolAD1rO6QEIT1jw5O6BeQCOQKUP+iBgytEUbalxXx0TfQBZX09TeD9bSb7bD1oDlzzIMUl1ATFdxDcJWK9YpNzEOMlSH1CCHWQ8L1iZX8Q+L1rtWRzJbR4vUy9XbMfhGxmjz1VkMzwCr1mkNALKrGGvW29eZDNkO69aFD09lAKNwhAR2clSDubkOhOcqVoDleQwYVrvWULT4dkvQQKDboTkOdmiQwO+jZQymVrB1TjQfIfv2dlRSUOMDd9RWV8lLt9Q2VZUOT9DC5NUM+3OVD4/Wz9QUe8JAt9YCoz9Dtlb+ZpUPZHnDQ7UNu3G1DGf3VLvioCjznBlFcOqRSXBdkFqivFocc+e3f1GcIjxmQTDTInggqNNPtKWLVkKtD9hH4Yq8Wm0MqxJVsC0Obet902o5SUopkUq4eFj9u33r3qOow6WTBLHOOJ0MY9G6qR+lTGWDEYSArQ+cGCVp1zn4cRRHvzsrsz0NYxCGoRGW9GZkUP0Or1XDkzlyeCF94GCqvHPsWlFJ37SDDsMMeLRBpWxZXQGXKR0OqGV9D53rZLgnIN0NqrrLhgHDkpqE6kahXZnCZJiw/QwnR9ixOqtdDZExkw7OuwPqxWVTDdMMOYgzDBUnZ5BtD5waGTGlO57Dy+okKWxadzJcRhDpbFrtDw2iHqG9DhxGsw6NDJwY0w53A1vrfzlZQ5waCTBtDTsSbjpcIoxE0wwFwKWhAaHLDksMTQycIqsNXThdD1voAwxjDjEwGoNWQQMVzvALDZsO3GaaonhjMw0lkYc4wTrTDLPooLldm1sP9zjqkz9CbeuKCGebGw0J8psPYw5H6lyyeCCYgBwZYwwaBYmQMLp4IjFKbZHkuUcM4w2wu95wKgcRkIi4ww9HDeWSmLjEmT0M9ZOguEsO5+lPkosO5+nhYWcN4fDzDR+l8hvDanaieCLPAMcSCYuiOhhyF+jZiS+l/xfGiXFlWw9WipcMBw8nDZmKU5gbDpfr5w67D7cN0YmzD+Iaa5MPD4eT7Q1ZQhMDrQwKQKsPLWQDDsggBxOD5dnzkw4pkBQJMlgjDhMAiw0RlXIbYILbDyuzlw+6sXHxrNUKG08O+w4BYr0O5w4TAo8O/Q0KGzuRlw0gRtapVwzvDQCRUpI5cWoYqLgPDq8MfwwvDS+Gaw/wwsGSHAmzmQFnQIAWgY8NXwy1IBcOJhs3UkCOISb5IxcN4xOeqAUHBHJpZEi63tFu8mqxHw/6BiNndwwoWP8MTrUXDM8OBhs/6i473EG2s16haw6cOF8OTQ+uqoCOTw9yGVKT/wxjZ38PNtF2qm47mwzQRWxaD9I6G8MMow+WtQlkQw325lqy0I2/DsNkTw+jQ2/p3rCZO9cMqifPDzcM5CWeolI67Q2QU50HUIwvk18NAWQY4VCO6w63o9AaijngjDgxYcSZOK8MV6Mn0PsMbw4QURsP5cjE0hiOcw2wNzAatwzfDyQYNUnXDlhyphkjDMCPKIx7gx8NOI/wj+8MYFB/DvLBHqsjDgiP+1fZO90OCEZEuApCjwJNkEgDKw4GGn+Q6wwFwn+R/w64jBaqxYnbDJ4YXw8bD/Ea8GbtmYrmwcuvDkMNiGBByHsO5HGEM3FyVYIQjnPjhOThOpCNMRokjUTmbjkojguyEjnUju02BFowjaUETw/ojzI6VwwnIFHy9I3ojciM6+ErRLiNKI3FcgsPqJqFY6MRgI/vZDSCzI1ONx0OAnBo0GixtwysjOWxsI2k5H0PclgicMo5nQ8jD3TmLI0gjViO3To3DvMNjOfsj8COrjXAjl8PVQcIjqSOsyvDDfMPVSiMQxy5+I7QE6JzQfJ0jUCzzI3Qjxnq1pKojV8xqw+omlkzETkkjWBqtI7PDp8zuI1EjPjliOpuOacOO7kzDxMPxvTCj2SMKrudm2SNiOooj6iaPwo2OgKM9ThojLgqPYN8jBYNEw5I85QbeXJsjqKMILtvDcP20o8gja339w94jJYNBLh4jxKMjFg8jxcCawyyj/+4bI/fDo45XQ3Sjkc7Xw+Ijic6io7sjDRVCo2MwqAR4o+OOxiPHStAjn8MV6ByjYOAyowtBLsOewzKO6jo7I7wj0KPiw+qj4YNYwwqjs4O/I73DJs60oxSjrMHE7NWQ0SMYwTajVSP1jpajdSN8gphOXKPUYk3DSiPPzn8jci7VkFCjAJX4oywjXvJGLlEjlDnSLq0j0sNzdXfDyqO4fY/DKKMGwTTD7CNuwmHDkqN8o8yjnzA3jiS8wSN1vQ6jgSORzj0sAqOhBgyjj3EjvemjSiMeo5MjYvjeo7yjtMESqO8jQpXRo3mjTyFCoyIj4pUtoxmjjMGNo6mjtaPETkmjgZX6w1yj1i6t6VyjcIIqI+Ej/XLko+OjgwDUoyRVSqNaoxFOcaNio2tCo6NeIycjTXJdo6YcW3KNqFcjy0U8o4OjlaPvjsWjzyM/vVvDjKNClQojHiOAI3Lg2SPSYmLKHiPx5LUjSiMPoyXpIcMByf3DVqNk1QWj/SNg1Z1IVU3R3qQ0hGoyKFaGm1ze9JDkyLQDXP/wyGQlAoF4KdKBVbvDBNwp0j6CHhqVw4hj+IYUWYnQl66JhgguqGPrqkEgbVyzHgptKGNalHoRRGMKoVTZCvjASNqh6srUqIRq364W2T+qlGNAY6nGJtzEY24jEi6EaoxGpiPo4BxjoMXEQQhjcMTwBiLDgdIHoYQUBaNx0hbV1HJI3HjQ7AZCY3su/iNFw7BjKBSWwzhjC+TsYwRjC+RMw4pjPiNXQ4HSEbgoGH3G0tzSY9Yjj8PiYwX4YYbC3J1QE/jmY8JghGrpoQYjJmORMFb4/KMcYwlZOmOsYxpjfqoYY0xj9Ly74Cpj+4bfzn5jvqqfXO5j8kbBY2RjdkE0YzVekAQFI9Nc7lDCDLlcRpFCHGnQD0Dj3HmIIUWuyQkWU6ot0MCKHghZYxs4t0BUkUljh1AOrkVjbPA5Y+vdlFwu3OCQyC6GsIBjzIjqzIVjpuALjP3FOeAB/Lncj7ZUkSgy1ygckFWQpWPl3OVjkV2d3HljtCipY7+4nWNFIPVjdiDB3BNjr1ZTY0yDfWN53DljLFALYx1jTINdY55QS2Pz3BTg2WOdY+eIDjCbY6SQ62O2EANjey0A1utjI2Pn3BPcGzg9Y2tjM2M4UFngWDzVY80ShWOI0cVjvWNNY+aQa92DY5RcbWPNYyVjr2OfY+fd3p1fPRp4K2JOPKDjVhlZo6Bkz+7QGUEu0OMgFB+kVlkqxnyuDrxuoDPp+hrMwAbkyxaXOj0W0MNHPNHAH6TOXJc6AJavI3aicGWQ41hYL+gYEGEcOOMLHilip+pY49MjbP2brQ6kTONM/RpE6Bk8w4hkFuhGGQLDezyVHuewQAwLDGYZcONo43YucJwLfcfo52Ko49MMR2JgugjjbK7VGTDj5Ok7FNBkDulVWNDji+DraZEY1SAK41xZoGSNUuTpL8pq45vgaHrVGYbjAum6QLNqFuOgo6dkE/Sm44lZF0B66eRM2WbmpNYtPP0frYdpdGIG4wCWz4xSDPbjqOJI46JEDzxyo4O6AeMkEORarH0W45Hj7fQ0QzyNu7kEmfZ9WTwshllqdyILpDvtCAy+ErDp3UGgoq2hXzzevbk8eePGju9kcmoN6X89WCGQ6awBxKJ99iPpnP0ifeTpdePVeeTpn3pLhG6YRSDl47+9vADrafS9aeP9PDa9sWplWeWuLeNZ48njWUG/+knjI2n0GYXjTR6KeUZqxHkLaTZ9qTwV6aC9whgD6YdZcmQV48kuP4hSDKXjJwqEvWrZX2lCGgfjQuIombvj2VRharZ5E+nw6B5qlnnq4uh9q+Mr6ffjC9jmpNfjAeoj42tiTXkUolVZiuLGmP79TR4pwEAM7+Mq4um9CzqD43cRDKLH4+ATExnlwSrizw7YZB59d+NpfUqtj+PpvX79nuiciPOQEf1EUNEZ6WMVYwzk5Tr8cITjFORkDDC8J2OjxaVmBBOkE1gTGBO4E99j+BPoE8RQN2PekSQTOBNkE/p18eNlbWTUw3hMGLCiREb7vAotpKRYRnG9SIWI2FhF4xUA5qfxAIXjzQmAA6LGQEGAHqgghZ3M9IXb2MCM5SICE6ITP8BKE8AD0k0QsoR2JnBqQluS5YWSExZskjTlhRoTeG5CDW4DJrX0Q7hC3DYIRQZJUcbp3UcqvrbAjOAtVwV+RlAtRi16tqABNYw0LUT4PhNILfSFMoI/BegtRPhZdEfU2C2vtuQyERP/zSq2OY23wqETFrYghWS2n4XntNu1M9ZFZS4T+FRuE+m2aKZz6DaZUIUeE1HG0i1dhXIYqs0CYG8FRRO6LRUTzhMEMkItc4TmttxOf4VpzApIj7Yd1CUTjbZd1sXG5C12ZWUTui3KLdN4fRNqLcktnhZ8Leot3hNjEzYtoHZXRoOkDC2SwTB5AxPYyF0TFUoEVMPNYRMtLUUtjbZhPcUOcxM9vBl5NROdYHsTTi0gtpl4wRPPNQQ16xNeLcEtSxM2TfNm6oWkjLhi09CZE3yAb80vLSEqDhPqedcTbYXjeJiNyy0myFq0Wy3rLcGiJ4AIyeMtwJNHzsc4YJNlFubsay2X4GkWMJNLLdstuJDZRadjBbxLwHCT0JMtRYMtQJOYk0DjvI2bTjdgFoFPnKSosVKgKjiNrYKiBrvK9eQkk2wW+5wSyOeCmkA2XGRQfjRSOOM2LUBqNKcYelx4SJLhhOKbZHDYf2G8kyXWNmCvgv4BxxSaNkPhQTiafAogdnycco7k5JMTeJST+5zykyfhz8gYKs3kVKSwUBB81JO9nEV875yPvCXkMuTqkzgRkpMcmRToG+GRAccUeZEPIZyTydaA4IEWTohSk+1geOEVgCyZUDZpTgg1fzahGs/hikXx7TKTX0EnnOKT6OYlbFSTSOD3nLG8X8q+9BR81+FXhUi2ApPngHSTNZBcfCF2ZHxUxN6Tbbz0k30h/iQPdfqTFpMEtvagIVask8STkeELtXqTvw5CtMDlp2gTZo44Dc3MkzlWH05iTGO82TQuzjQ207zy4CWTkZPQfF04R9a1kzED7ZMZk3akPpPZk/AWk/yktsIWjJMlHY2TSEIy5AEEkBkOfJcUwQzXQY6TbpNRwaFBLJmiYEtBVO5sbOtg447GODyZ2nyeQQQqlZOGpGPIQINHk3rO7ZNFnMwD9oB+7X1gmcMG4AxFRZM4A/WTB5w+pHukWZMvk0CO45NcNj2TV4iUtiIYBHzVk5I2xBgeGbkoMcTFMdB8Iii7yv2TqE6wfFy2R5OjpDPYLCoPmu5OA85IU47DNpPAtoGTOjSJLEZ80pM9w2AUI7za6EYjBFNmFAmgEnw4U5IqZpND6bmTwLYlYAp8kSyGk/BTIQhvgETE2pNsfNTO/RSn5CaOtJPFNlRTm/1dkGR8l5Nozsp24R23ky8O8FawU76TlOav0NEdLGBjGHOWI5NsU5OWI5PQU9cWH9hzQ8yTf6OxPg28g5MPvJe8ulO0fPjp75OGU3282s5FylakklNOaJOTYGH3vHx8OQOzvPRk87xKpGIWFsO5Of3BD5PPrjGOBwQjvPu8jY6ePLp88nwJA++TynxfBG28yHx4zh5TelPSQc+T4VOyKsFTj9VczsZTCVMYFiOT+HxUFn5gIHyItR4W4Hw1w8uBzaRb5tb68TUIfDx8aHzoNSIZpWCMTEVTuaTpw8lTl9AlJGmisLWq5le8dcpZU6rmiHz7okA1rf0afJNkJlP2YKlTtVPMfJlTGjWujgZTPzWaTu1Ty6KtUyEIumBifHU16OYhfDZ8DuitjhNTjEzhNa1OqmBbyvuTHnxFxOp837yjEVVT3VMq9IFTielcFueMbLWtTja4m2TifBGO9SDmfNY5405HvItT/TmTpHOTfmgLkyp88VNzObjmg1M7U2589AMbUw5Jc1PrUyVTjEzPU9NTzZPLvNJSRpGmThst+WaXiFIwt8Rw03gTR9ww08V8cNN7UJG+aNPN1QZdoKGyjBiSxXxqSKvcHYKVVNyDazX7SJEZeNMAYDMtlJS93JfO+PDNiDF8yFirDjjTsKGU09yDkeaawJSDXyww+MrhnNOcg+AtDNO807TTJvCDpNXcO3TLYMzThBWzDjHmgiCA+MEc9xJbCPTTgPi3lJLTZx3S08ECn3AJmlhZ2TSa0wV42NNS063VxNP40wstNNNE0wLTctPRekaAkRkI0xj46NNqUJjTzmxI00wVbUVN2CYx6NoA8LTYyCVCFItd5qC9HKK0IxK9oMESZeI/NTr8LRzF4m5OwArBik01utit0PfiWFamttkli9rCfISJidMxSt7T4tgSSPfiQJL11uTad+WK/pim/toYwMH2vdSzHOnTVIJbFYMcZdOODtfdOtnF00VFadPNvMQlmpUs2iHTS7Yp4IqEDXrO2PKYxerWOTKx7dMFtOOYbfaG/NdaA4AiMV7TQXwiMcUgqSCD02qJa0Cl073Tnv7fTUlqSLC6cRyYkxwg7RIlc9MRao3Tof5T0ycgtdOKJePTHtOaJSDJS1qt04X2qJwy2nWwiiUxID3THbzsMYn4exyd0zJ2BzlgEufTyfjzaiI03viLHJ4EhxJEzNcxiAFPkc3TM1oT09koMDjz08gwxiggBNPTqKiJUXsuP9PQ9qdYkfi86jtBb/hKPVXTqax7HBgzTvQ0/AfTq8gb2Fw9iDOfbPiEPdOGAY5RAtSc6pAzTf4NTZzqo9NgMyQz4UqAMxmR/dPrTC2xb5HEoO5yW/aK+HoYEQTP04/I+M0IVHwz/aznJtdax9P9rHvTlyB8M6jdZiWpMYwkwBam/qbWBbSy1Fb2RbKToDbM3jGA4L0EXrYr7uATWjNiEfQxeT12oGxAkf5/MXagQHB8BA8JahyPoYfIljMziqlgBTE/fhIkj+aorOix73wphVSY8Xi06oPCzgE/0548OjNXMakgfjPuAYkx60w95oPWgj2hMywUWtEsnFw92jPuAeMxahxxM20xNZAdMUq0C/YkKCxgMFRBMx4llOjvKSzovKyeRYspNAFjMZo9R/bPUdMx7ylrQCvu8zFZM6QBDyXuPdcp3jMJIGUxEKKr05sxlOq35hKJezE7fF/+7LHTUF8popr7JetxFILIqGqJqjOzoIFgMrH3MZcgyjPmMZkzuZRJM4X2njNGM+kzuA7dPUq00diOM3ZY8jOL09zWiTNNGUCl4xBHKYMzkLFHM3N8T7mHMTrWVjOdMyv+WzOlJK0zajGuMzsE3ZhhKMszqwQO+utsOrGxHA8zGzFEseczTTNHlk4zdTNsJfMzO3xVM9328c2tipidbCUtM1EzajF9aBSCfgMj9gizHTNmwK1Mf0mBM/YzVOyZkRSEizP/mJo24UpJM/JdRrG/oFbUdrEBsWSzll3escgB5LP7PT2oYqXusb+g9LNusfaxlLNJXUHI1LPMs/DUJLOMtAv1JV3ogFqlhijKyLqlDjglZWelorOQysalJSgxyehlp8jxyYKz9qVeYFKzirMKZT+lACglyYKzrqVSs2/ijqU3KMRlKGWhmP6ltaVpaOml17BM+fXJYaWvhEmlykzccd2l0GVPaPGlcGXacZ6lasZlhK2lBrOmsx6zk6VYZUmEBGVVZRRxNmUhfudUqOU2s/WExaV4HlazlaXGDr6z92U/ZeDo9aULZWWETaVF+aTlUWUSAR2lm/4BhIDl/2VZs93JN6XqcYOlXCG3+WLEuqVJs1ql2YSYZaDlMbOcKQjlmETzpUP+wbOg8Spl6nEY5Zgg0nFLZc2l1bPmqYmz2CnnZTgFXuVnpQpofimls20ufbPXpUDlTZIcKd2z96UZVK+lwyn9aCwp1qnNs4loBGVU5Ylo82VtpUlxf6Wds+opibMNxB6pj/YIZQ5lI1RdKbGlFWiwZf6zd2iA5a6z+7PGpUOzaGWDsy8BMOU3s1X8uGXyaGJl6GX5/JhlBrOkZdmlSfkUZWW5lmjUZbH5p7OJswxlaOWWaIdIrGVp/KBznGXNhNxlsOWR+SWzg7PF/KWz8mUmqbgBH7MTs0VUsSn2qTm6uHNrZcH8eGP9ZX/2dGXLs84OumWDsxplBrNaZYOzeSlkWG8pOWhFKX+zRmV0c4BlbHP6swQOFmWMc2f8MmW1ZbxzGOUNZfv89mVxswJzR2UGs+5lpbOeZU+lm4Q+ZTJz/Wj+ZeWzEyl3s6FlpbPhZZ1lqbqQqW2zJN3CZYRzpyjEZYBgJt3fpTOzpyhpZfmz+nOVs0WzI13Cs4OzeWW2czcpn7MFZXezZWUEDqCpr2XAATFl9rMKmt6zQnMU3Zhl+OXWcwhADaXLKA6UEWWnKBKp5OWacw0EsKmZs4NlJHMHGvpId7PjZYOzG2Vms6WEM2Vpc9FU+KnBc0SprCmRcyk6rbNMZaXcCPwpZcVznajpZaXcGOVVs7lzZMilsydlKXPsc9Vz1rPYc+DoJMKjZQ3+BGUoZc5EHWVYZTJE7nMJ8UIpobNMCc1zonOXWH9lQ/73WH2lkCljc5dlRbMyRMhzXXPmFFqlr1iWc63KANjw5dNz4NhI5RNzxaVrs+DYq2XLZVtzMrPGs8nY26WzZStzhOWJfqazo3Pzc2Yp+XMzc/3JeHNCCeGpceP7LbmQ9OU65fn8gmUc5TP5bOXEaSuEXOUGRDzl6Wh85bauEgGC5c+pjuW1/ArlYuWWIhWpsRJP5R5ub7mRElWpPm4w83WpY4QQ85ESkmk5aHjjeeXJ/M5In3NM5b2p2eXcboja+POV/Lc8evGfcxblQPNW5dxuNuVg82WST1z1dFDz+/btOZBp9Sb1hCblyiQU80+pkRIn5YgiwTwP8aTz3W4fSv9zHZLi80zzOWhF4AxpwuUV/GXlkRJc8yv8yGmaaBdEWFaIIqHg33Hj5YUiPMge5YQi33OKacf896jd5cf87LiB5VPlpiLFyqHlLeWdaC/lL/E/JfWE9vNpEl/lefwf5aHlgvNT/FAZaRKe8zLoJNrj3XgV0ui0FQgC9BWTbmwVGWOqzKOpM93B89jUgfPH/B5dPnbGCUgVXvyOadHzTICmaR0SIujp815pW/ZZ8wnz0pEFvCwVYfOkFcnznBXkE29zmf1frPXNm9bFcQDNkc0185nAx6ZrE4RQmulEoPXzTQMpzYiiIwNz6WHGPBONnD3zdbVD6B3zhc3mLdearfMwLNXNXwOm+lXNDC3JmYG1VezrA/gGe9TaEFoUKiBtzVnNZgLCZl3NXfOAXI3zS1AXzU9gPHVN8yB2+dioRJ3WaxOKNKYt2+DN84xha83hZKWJikBLzRvzu/NLos/zjZxy6WPNN/PuBSWxSbiJE15WV/PvzS/zAkX788G2//MWbInNz5m18/eiMGTuNvQmT81MHLaTBWkpURcTcfRyXNIzNU34LVlgHoRwLYggRyp84K4TEzZXBdgLScZeExpAEz6+ExcTVgLtxikTjAOiwHPuiRPMEXLNkROsAsJMMRNs1ImYRC1gdlCFjtVkLTQLhoCQ3NQtlAv4C9kThAuidMILvyAFE7WAxAswzU0tEO1wTCQsBxNKgK7VQi2KC2QLYi27RvdtUAYELC0T64BRhOwtwbaBvHItPROMA8oL/RObE0oL8gv79FAg8uDkC1otsEC2oUItdLbPbRQghi1zEw7ACxPmC6ZAIlw+lDnYnbYcC/2UvgtKA6YLPpRpLc9t3cBVJSB27fnkFG+ZyhNh4eIAvxNIkwI4Fhh/E1F20f0bsOiTKnZJC4iTOJOGAh/cFnUpC+BZIeiAkxiTl/rmRcjTfYxQk6ULUy05C2QCeQvBzUKDiKxzxJyxDWSnsMrYhyVJiId+kJWaaR0LhwlB02JpPQtK/GHTj9avHWGgqSDrkDrGbQvhSvq0A8gJ0/YSMUrcSLvI8g5zC98l4GYZ07HThbQAIK/W6wvzcFGA9dZZHE8lFT5U9lvThZQtCxD2FdPQaQML5LTX3VgIYRJLC+szjxifyJ8znDEbJasLbdOX0yKgtFKV9iboUwtlNH3T7wsRJNQoV7an0+8lNm7bJR6gndZdyLH2L915JCw0s9PPCzUlkr1rtqYmZrRAPGoxyIsWJVYFm9Pwi1Ukn8hQi9cxNwuH0z8LrwtAi0ccpwtvC1w9BIuoNrfTPwvmyQ/TYs6fipcLl1BKPYgsrQsf0+8kHon7CyiguD20URIzYLTUbv742IsQi5xRwDPgiw00UDNK+GMLmItOrAXTvQQPC8Qz7QuHC/gzOzkSJGSL3DP33U0knwuoWGcchGmmHEqLLDMeJLSLfCjR/BSCwY67Yor4FDNXJcU+1DMWi2cloIv8JK+KWXHMM/8LSzhyxlqL1xxci/6SmDMMi68LZ/6p072UlwsyOT60xIsLptcxLIvOA9/NVhN/dd1mVyARM8Uc9ciD1q548iXFyM8JZTFoTIvIPjNaHHbAITFvM+NkrIuzUOszLnC3CwExSj16cLiLHbaFAtnAZovli80g5CkOM6Yz5SjFIAYz6zPi7q6LujO3xXDAGYvZHCHoETHXMZCQ6YtXIImL60wXqB4lsjNDi9duzTYxM4qEaYvxM6Uz04vJM4qxDw1Zix4lC4vaJP0mOTNvMy2LBTOGMw2Lrx1F4NfdcMSTKOts7zHti2uLV7agszkop4vbtpyxw4urMb2L44sbMcMz4UoUdn4ok2zdM/+Yehh9M2+LuhyLC6e2grE+sICLzTPXMa8j8YtXi1imyYuaJeeLc4tLMzMxUEthKNuLuYuINvWLwEsysXszHQ1jAABLYLE/Jm1SpzPUsTWLIBiXM6hL9ILpILcz9Yvrbo8z24s3i68zMzF9izilOLONBDRLtfYosx6gDEuSMQF41Rwfi8yx54uAMDPI3CXXi7WL2LOSsdUcWxVLDKKxFIKK8FWLoks/3ehLaomCS3GLMrGQs2CNjTAKsZBLLiGEsbOLqku19l8zMD1KS0u2TQkvHIWldfW6djyzm9m0s85pw8i8pYyzzTM4Fe52lkuATPnzunbUsyZLnKX2sXZLDLMuSwVhprEBsU5L9QtHeSND2f2MFleoef2udE/5hf1RRilItMV1gGFLvUghS1/BUI1ZYErOC2YZbHVIrqbXgidmeObx0+KkVgNUjN/CmUu75oFL2iGXZtlLGyGXZmlEN2bFNNbmuaSoMxU02/2Z5hFLs/rgeOb63ebzekV0p0To6dtmAOZdsG72IOY1S5Dmh/16A9FLEUti5umZk6an/YgDEGyWFhjmsAMVhbf9aUuSZo/9df36vBNLzOY2FrB1ChZf/Vlg/c505utLrnS0gIQY3UuadJ1LoAMUA2Z0rUui5mlLjUtUFpjm6XQxS1zOiANB5jZBp0TP5Q+pr1xu5ti8+Us4A8XKObYiA7NL2wjcFhwDRPhtwQ7YyUumgDoDeubvgnJm9AM0AxNIcuWq5sdL8XRaQbDLFUuHS3Lg3APYFVVLEHi8FjdLggM3tBdLhhZZ5s5490tcpJID/+XPSyjLmgM2FrtL0c6KA2Z0KgWGFtTLqLyx8THmqANjdG0SvuZjS3ngUhn4y6qiRmmmA0IDCAPqxXbgWUvvS5OkU0u4ywhTC0v8y+GLlhP5fXRDnRaeQasUFtD/DkVBFeH64LO44+aX5oSi7eA35qEDfyJayxzppQP1bYaO+OnTA/Vthk746Z8DGYKK3iVWShbtZXtLoDz7tIPezMHHA9ll83oFA3l07MjDafjpBsuz+ifmyRSFJrtBQQNrSAmYu0GNA5dI/IzjvC3mYcu63u0DocvUpBKkn+Y2y3HLe8LXQSAWFqJEFl0RcWWnXKnBHdF/InqYRM59Ef9I32bwFonLVSjIFlxBmnRpy6nBawPJtnrLmwPAovHLBkH/SMHL0BaS6ISiecsUGRbLqWXKnl+81cuFy3UhIhkYkYXLcY4KNOIB8niVy43hYXCKyGX6Z06SFkaigl5tU8u+6KKCXqSDXIM6kUTTzRZiyCc9sKEby3BAbHCVFpvLkRn7y7vLWwixAktIh8tUg2fL9INVvJfLPksX3YWtV6hx1iE0ybF3rHHWDsAIOC/LTolH7XbRD8ufy6lRSdEibQusiVHb5Lit48BuznzMP/XzwNvuZMzw2JcOGta6KFhx7ZFfy4uJpsmEFHJUCF2XFvmR2F7rNmSMO+gkKrWtDA3rkTJRYlL35Ii2wvgaHoAU45E0UWAeV/n6Y1grth51EM2RtW2WHggJiBSpUaoYj8uj8OytuNgII+7cBK00K6IRNlFFjBQrTPTbLOjuHrDPrRZRYYYLSe9M3ugicXGJyB2tDBgrjoaCKyM2KCtDOGArPugwK36GcCsFoQgr3ZHmtVtRLCv+Y8exXQwOyEO6WVGq6HiQWTlMK+rRlHH0UXQr8EmehInoknANrRwN5FG41o8MugXEUQ4rgsy7SygY50jcrdwrMMalUbZiH8vkjvM4nA1GK94MWiGCzEErmL2sth+J/CtgBtvuniuUK7BRLa2kKz2RVQRSK9uRG5HZK3YrIgafpNjRVivQBr7trQyDhFmRoe2h0Vor0SvHIOUMFfAe6K+RJ61RK00reHEaiDgerSuOKwQrMFFxgHzMzcCNK1UrbJ0NK+noiVAwXU4rFehDuBweS1iU0SErxuRhKw2GPlHQK4juPJiicTUrH/jPy14ISh5alJgNL4Tq6Osr09HjK8RNWYCFkTkriAR5K5nRuytj0WUrpa0f9dwhCSsfNggNrkNgK19MXivfzANYfCt+K1ZDKiuxK7buGpRiK1Er78poHgCrLYBEbQwr1Ur7K7/1PjCm7tsrYxiaK/5RHZH4ST/L0o2xUUbRKCuU5DwhxSuo7oxUx1EsDZ7u1yu5TN0remT3KxkrlB6GXvStMwzt7gorvium7tirIMxxK+irQKs1K2Lc9+5RK6vGlA0T8S+Dg0ha7od6NKsnkZCrFKs8zkQrH4nbDKSrVCu/7oSrWAi+0TgrEb1Cq5irtiF8q4FxFSu1zHohXQxMqwirfMJ6K+9KsyuS7jUrxGgnK0irs4Pb7ugLfI0gGBgeq1GSDTTR5I6pwHiMXdF6DL6tt616DMqtlquoxrRtS4Rr7vmdKQ1uCfxGUbFkeBBRgtGHDSvRJ4aF0aAMIm3eq5aM/G3WK2ZtAZLJUSScjTgz8SNRmNLRhANRVNGVDc7RbEYU7gGSCB7mq2h5dyKEHndRNqvJqy3Rqe25q59R7G3xq6WrGm0tgL9REWC5DW+t0gxX7sFtoNFGRhkN7tGa0UvVh62M0ZWraaux+NBt3G2K0SmrR9Xo0TLRfBHQNfrRx9hibQTR8lFE0Rjt5ZHH2FjRJu2U0apkjIzOqz2rQm0Oq1NutTglq5DRim2JYh6oHNE/rQurGB5K0T6r5G3SUcGr6xbl0YOtxuQ62RLR61IRkmIeHfjnqx5tx9mqxuGrqtFRqxxteatQ0aA4W6sG0SBx66t/UburTdFC7mWrddG6jsqtpqYQ7n+5II0lthf486vIaqQrU9HP2H2rdkNz0YOr3av90QCNHavd0Zurras50XJt3avfRhTts+j9q0bg96ukK93Q+7GBq9dGVGsnUZ/oDdHXq76r+BhEawGrkGCE0R3Rte5sa4Q5oGs0cDruS9EAjXRr/tH2q+bJikMx0ZiNOIbH0e/RxzgSa+fR39Hss4kCNiGyawihP6JBOJJrcmsR8wrsimsbzupr0mvo4XvR6mvlC1bNMmsP0b8sWmsqke/R+FnA40z4KcArFasdqGT8KD4VdmtvCZYdF0CPDs/Fkuh+dScOz8UWYMrusozGld8g4+hPIUWyCjOzrUch9X7YMaFrsaOeRTYzmJ2NdQwhFjPrUr5rHLGR/h5rYhjvIfQxQnixo31o8Imf4J/oVIylZIW0sRDPFQqOXPa1RtSVTmsPSYFrTXLZa5olKXhplV5rxf6shpQemOOhZMYx3xWHQP5rlrge1H+OVzEysYPCcWsY/miLVWtmQkacfUk+a6QYLogFZG1rT3XJa6g2TWvilTVrhfZqNXN1i2vRIEVre+T5a4olHdFXFfFrbfGenT/N0YsFBk7oR8UhMXc2ChVwZbUx+Fycq3ge7gFXa129fdYhMS+CAsIPax4lu0ukQ+QYwvbCiIXOL4LYMWcMTujQ3IUVeijAZnjuFMkYdnKAExXDeLZkeigGbRG9JBiQ2DUGXUGawKjsh1L8FVppTmQkKF9rWMo3ax4lXuY1FdjrwDYgy3EVN9BrFWr2iZUqZCTrSvZyHiXovKz9KwaDcVKorLjr4YO6GFMxoe1yHi9rF9Nk688hbzHeHs9KL8UD9jeDSzgPFQkgHeBGFYoeCKUw657ubNaXM29rEb3oS/slee1iGKbYnWuBel1BajV90zzr0o1FNohLZ2vQo9jrXwvSlQy9JOs0hioVuED2azgNnKtq64vTabU1FQWmaokDfs4Vr+77JfbrH4NS6+yx1utM699etzN3a3yjP2sbMQNYBoMfaxKUBuvk67RLvnqUHiHrmksia5EGvX2x9oAdDRWB61T0koO+60sliZDrjv0eNCUJgiqjoQh0sTzYFRVxZmqJxysO65bra7aM6+QsWuu6S3HrFVF664P+iZUna7X2YesHjqbriDYsVKrrJGCL07jYEhVK6zJLIuue7h3gEiUt6+tBcOsiS37Yoqvj6IDJOutLvW9wOQ606zaDrus5DqXrS70NAdizhesu6wQ4w+u561nrfev4gPJd6h6tQ1lt8NS767WVlWLyazsoh+vjlYumeoRM0kfrXUPmdv3R1+uX65noA0P76xprxXZ3671Dw9mGyGfrRZk36xwTDx2IrHVddZJEIjmhJ3luDrYyjUT79lXuAqEPeTloF5C6cRb552j1tBYr2/lJDlIO0/koG1f24/lFVIgbHqFZ4XDz0UCBUZ9dEBu61JDdtA6NyROhqPllMFDumBvg6BghEehoG1P8oxwJoXndDBtluZz52gVUbg92nPlfeZQbkqFGiLwOX8IGoXwb9g6QGzn5X3nTwIFRpPmJupX8UegeoRIRXboDKNlxhBs5IlIOABsK82GYytyg3Xpu+Bs+oSd5YGI7ELDdifl6G60J6vmSUrBKGhvIG/HzS/b6+dFUZSES1sr5pCJSInwE8BvE6HW1wfaXXRVorhvC1tAbvHPAqE4b4BvH/LwwEtYneT2OThZi+Z78UbZwG/4bMuiuGFnop11Mc7kOYBudoU9o/xIy9s4bvHPwGA2hQVI3wgkba/lCG57souiq9hYbK27IXlwb7/whGwN86/lSG7YbpfmpofEbvhtV+SDSnxqeG54J92ErhM0b2tYPYE2SrYynWMP5bvPemHIEShsy6I7okNiDGxEbNSi9G6m6BRtZ6NQbAnPPnKS0SgUy6BkbS/mNG9C6KRuWKMv5MlR+Rm32khuTG6M+sRuPXbxzQiJ9wq9zLVE2E0rdVGFUboZBv0jIBZQOMhLYBf2OeCIcBQ8btWGV3c4OrPaF3ULzmoykxMwbVG4w9oAFh7GJ2E9xYAUZbrCl1xtBYSrzhHgkYX5h9m5UkNIiNxtT/GElMgXDXc8bkrjYBYpMzCJom3ngcAmYm3UQDGGl3TkiC/ZUBcABMHB00vQFdZIQpUbdHd1GblibFGEcBZ3WHAkcBfbmcJssoj2SQgwsYSyb/WgO2M/53N0uGwm1pmGyBXbznfyZYWlhdmhMm8BhagUvwrCb4pvh3VUbQpt+3XVhFfx7taZhyt3H/KcllWEXG1ppjxsKm4gi2wy+YTKbqbr0m8rc5t1+8+8DxptpRP/C9t28m+u0NGEcm7ybuJuxYa95XbDIkvzdvHMEJTIFCxvmm8Kbwd2Sm7aMXpvsGyvKpmGp3a6bmZkD3a6bhJvYBcOw6AnR3T4b/pmZ3bKbhWK3OW1hCQWULTvdWfMM1vEFJQV//PFFJ91LYStu8UWGaxbIKQUpm11hmZu3kvmbdBN1iJvdWZsBAUWbhdJ8s5890miTGbwWeI7lGbcZ1VP3GXe18OY4RDCZEEoRKn6kl2rddbUTNKR5vaaiO2ZBoBiZySBtmybQxtjUGt05dipGy9QaVTkYvAubwHlWvO3YAZk7w8zOpn3VZG9La0Bvwma65cN45q6k/OqHm3PEbTi4GkDD+XSEGLgam5uZIIAYaBroI9gVZsuLm12bQaSVmYOb2XQtmy8Zo5sdSwOZ72Th4Ivm10SnZL8ZohaLcC29EqINS2BeQpkQW8yicY7PvRcZoqJ7m1IMAFs0vGOkQ73p7GOb65uzmyAW/Zu66jBbp+VfmwlkHLy4W666+xmlE5jeYWRYcCTLX5uuulRbr7aEpOOZiJmn5f9gxDn7a5GL1U2ZWWXCCstU0Kx9yW4kMtyki05UmcWZScusffSZLsvNy2yZ2Zlhy/HLAxlxmUHLKwBcmQDSOSZ8mdtA3FtkkNBbRJljIkLoYpkBtkiivXpSmdS0FcurIfKZK2hsyMaG67378d+C5ltqurMTelt6yx29upkiWx9qaJipyzxbNGQuW/xb/svuWzLQucuey/waIDmFy93LOpkOy+mYzpkiKFR0XluJmUZbEls+mSOCbF4hmfAgZVLcpEpOWZlmW754UpmRmREqjyYNvWg4ouBspNebHpl5W41EQn1AwPDmissHmaGZU8tbyJWZ+ZmDtm5b2HrCW+PLrWR7m+Civcjvm66Z9W1Ky6Rbe9n3SDJbJ6IRW25brrqLcLrLfVtABHFbMVtDwAFbYct+W0XZIVtFy/dk0sADW37UYEJjbvBZKEJ0Qd6RyFn2vKrTnl2OkVtbN8sjCjhZ1MgekUdb21uQWaQjVXYbWy/rDBQYWZdbdLDA5AFwd1tbyxXzw0Nk1CoC6S0FsM5tLoDpLX5UEHHvW+d6syEKHt9bANtEoYEm3pVuFAO4cyvfGAQt8SHsqz/hCfTt40h4bHI00dhM63EYXSjbwsOg2/fkth2zUKDtyZhonWPKiu1d5P8Vk2hkoYLMmWsq+vGh8yBOcjzW5Lj47ToYw2uk20Ntm+H+SU3BjIwSEeXNuNsukhjbdaig2/9bqNuQ26TuYvSArOVS9m3Q4azb/RKEDYahAkkfjvytOYC02ypOGbHTgB905+MZscaAJNsNEFko1+4E2+q4s+3Y2/pJ00Cb7ZPoPNupjlkd/NvXaAXZkKvA25VTltuDwBShpF1WqFjbWxjE1hhOqibO2376QnWnoScbZDk1Te0dT0mo8gUmh3QI214IsmTZHSItpbQNkskdIpSR2zkdhsT3koYdT0mseK8mw2Z7eqCjAQ3oS+wqM5Sy7bmDKvRZ2xwdqh295GnbDh10uDTW1WS/bUHb2kl9SG+GuWtZLBDYjW3pHSAgPiQ8Hckd83CJHX7bgKx4eLmMLdsE2KEdxR2N263QkR2QqMbhdMSxHURQMLat2yENDdsc+knbTibd2zEgdR1T28DJbJb5Hf3bVUDooArd9gkBtGUdQ9udEXXblSZj243E+IQL280d68pQHe3bQi4lsefbEkhdHckd19t9HX3bq1P/cv+G4NvRWBodk4R7NkOUrWGzDqlyH6IXkNZL/myeDn7IUbb2S9/bFx3DLfqEmx2/2xA7Kx3HHZFAwDvXHWsdJtO2hHltgDtwO9A7dI03HWg7yDtDQ/+j1ApuljTWAaR2jONk84ESxhJku2S0OMFZtNUjuQM4dw4aHcFBTomA5Bmgs2QUOzUsLuCJuRWQRcR6PIrt50bthXTZoO2BkGeFfDsWbPeAgjsGOEZkMYX3/JUrd2THRu/FReitUg5NMEi0K4kmCgr6hIwrC2R3RraEjCuNZCaB2bCcO8eN/aAucGYkfoZRZBI7xTgSxpN9+MbQsDkJ+yir7eUUys4LrYAt4pZOiaRkPUYcO6IRqrncte1UBDs0uUw7QnXfrUmkOKD5uM/8mqy04EmUEBmPCbv0mDiDVEetHjuitSI7uG167C6Uoxb4iR5g1qbJOyYj/KS2LP+gojuKQFfNMBmtzPI79D2p/Bpj4jtNFLw7Yjug7a/pw5Ghau/dnCRqI3loJL2f6Nw0s+1ojlfGqTu2Yk47uElenNMBijvuOy1k1bm8O8TZoO3hOypt0jspHI+IuSvSO1rkHWIVO0oCC1QRO2M7YjspJAlZUzsgvTQ7szsmOFfFnm2ROzRMWAG4bas7WG08fEI7Sz4AAb6Jb2RpmgD4ZjusO2WDKzRGO7KsoTv3WW47lDsPFWGsTzti5Ixk5CA9teuRyjshvnXY0+iFO5bA4Q6SBkZklqyY1NAGBzt7O6HoALsCFK0kGTs/O0kK+AHp6BSZykPzru425ibGlWIUsLuCEfBkSQrxOzkJidDolA1OR63apFjZ2cDlDsFZ931LPn878axrzHc+2+B3O3/kEmSvOyQ7Z6w8ZK2+XzvHO/hY5wgW2WM70CDdeHwjBzs46sE7GzubPiU0x5GwLJ68Nxa5K6KkhRTZ7E/YmarfnH9aXjukGCFSghVYovK7IrsMWLn85jvxZKxZ8rusuxi78fJYu36G0OSS5MU7JrugQw9AQLsGuyh++DvLiTY7cFrUu5LKBLtMvqprIis+O3masKhXO/UsbDuFota7LEHhFXfoRztDOxR+EzuWbTs7Aln6uwG7eVh6TsWt8AyKompYVjsyBgc7NnDPvMC7ghXATpQe0LsYThIVXVL4lcYI5LvvO8pD0E7eO57MENolu8uJJLtpbmS7ZzuMO567fjtgbfG7wRWZu6M7LWT2+mC7nLtOaEm7nbvtvOu04YnnO1A6flQJ9K6YZYPMTsWtdbtmTKbinBRAbVW75lkAdBOtZbtqTGO7h+jIu2y+H47n6Hm7XL52EMs7/Ab1u3i7ybsaZF9oxruau/5YYruovQc7AiDCu9C7t45Zu6BVXlgNu/Zj6jsohiZk5LtnrKa7L7tnO7O75W6DeGBtE7vlbua71zuxbpJgwTujrG27p7uwfD27FY74iRe767s8u2B7xGiZJG2svrvxWPO7QG1/u55olflJiV+7GHtH/Cauprt2sNO7qCsfO/FY2rtNONNk12jcu5UrpGRHu+u86btSy64DMst/6/4g+EQ7u101oO0sex7ouiIR7QogtHtqbENtmDaiO4Qwiu3h7RpNhzCmAkC7xOTse/rtlKtgdoAgSqZGO3x744F4dR+DXuggQcp7+h7VKF4CWHUfgx9V0JwMdZx7Ynu7OxNOoqu6ex6A9QlHO2x7enuw1HoVYpV6ey1tNRXUsIUU2wCse4dSUJW7WWzr5dRLPuoQ4euGe0hYbgHfazkgfnuSO+DCgtXi2eU74pl+WLXT9hW6wKBDUXvd7khBpLs6DZSrqnt5mmQhZjuKe8EVIO3V7kJ7Vtnee43rpntIWNZ7GU2CFXNtNRWyexc7G+B563/YTjiD0wZ7KXv9WjGAJ4MJe6rZL7lNe5MwENq1e5UhL66Re5V70YM7xAG8L20IlcQ4hXsdu5Z7NEyG1OU7nGBqu21Zx2uGe+RYRXuSexR+C3uPwtN79ntM67Z7jG76e1N9jnuy9F1Zs3vuOKDJ5EHqsE1i6BD/268Ax3tDxbdYCMkXe6vFV3vaGKIGw2J3eyfr1WKNYtkMiV0pDA1yHWLqkXJwgdmvexhqP3vaGDd733vvewWb5oiVqo9773ulXH97IiBzofWblfPVmOyp5p5zuDnJ9Khis8KpRqUZpbaor6XCqRalkrgo+yqzhWUGsiqzfSnac5GyztIo+1qzmPs6s2qzSbLfs3z+zrKUc6Jzm3EHszakqbPlpSs8IalRpTAQjrP8c+iegOWXs+ieyGVXUJtx7rP0+56zYvves8eGz973ZQL72OVec8Okq2Vc+wr7IbPE61SyMmXNZdL7nClM+wmzJ3PbpMmzzK5s+2qzgvuPc2+l7K6OswulfPt5sy1zRaSFszckIvvg5RL7ACkS+5llXCGa+9OzCOUWpNtzTrLFpZ2lJBC7cw7UnvvHcz1lbvsRc9r7RSz7pa77R6U5yeg+DvuI6A+kF6UHZU0uG7Me+1OzEXMW+4uzQylz9lcer6W++7fpq7O5fkn7sCDLKfH7/Ckacxseg3O6+/neWqka+0ezvnMPpFagZ7MbHg37eaX53tezwvu3sxmlFd4Ps4Ap8fvfs+37r7NaKQ9inXP0+4Ypnfu/s2Kpzy4AcyTjdrMlpf6yNin+qQgZLGVPcygZS/tUqDbYCBlkc3Bz92IIc4n7pinxqQally6npT376HNcqUP792Ue+wRzVOWI46+lV/vyZTFzjSTRaZv7ufvM6ZRzPfvUc/T7tHM9+/RzfSkC+8xzE/usc1/77HOAB5xzGBDccy37tSl5c7z7TmXHs13j0AdM+xAHtXMH+5JzSAe+Cn0p87MwEHJz/Sk7PIpz0fvKc537qnMH++pz+XMjPGmzWTyec4Rz2TyYZYZzq5BDFhuzFvv7KeJllAcw5Yn7OWXR+3ZzPftOc537nAcH+y5zGBBuczxzLTxBc/L7TAdA2JIpSjgiB4igU2UkruQHTPv8B2X7JAcRZUE8fWXNsx2Y+qXP+yNl+cmgENez9Pupcxr7GXN6B8ZzTPs1c/r78BmhOCr7V/upcxb7qXMe+2YHTbOw5aQQ4nM6Bxl00ftnZSJlf+CDpZApWgc2+PnJipjD+4joShA9c8eGQRj9cyDc0qktyR32/BBaqaJz/BDZs1n+MQdW+wjlkQcm+wdlQRgLc3z+wQfsqdIQq3PqljWliQdy+zOzexirZVTlhQcq+z1lexhLZVd+vgf3Zc1lWQeXcyzYwQf+qakHd3NlB5TluX7xB7c53tvJ8oV9QhJDqetihvNOssTz7OWKadf7k6nZJdLjuSC25ZPjrShK8/mpXzyi5aAVRuLw85ESiPN44ksHC/Fy5Qtp8wccy9nj0wc0CRnlhOMTB70HgPMW84LzfQcxRL0HA6kdVBcHbuW889cHNuV7qZPphPNzqZPjC6lpEvLz5OmT5crzuOk3B3rxDwf95UMHTrI2iKMHgxZ/qb/llvP56Wnl36m28xCHQE0O82G1sBMx5aTLFzz88wnloNj44rCHNAlAksAThwcqaR/jGVxgh6cHQIeAFYSHtOagabiH6WmT5VflguKK86iHUTzYae3lSIdfaQvl8Ie3aQvl0Ifpacppcqb9PDSH3eVC4r3l9PPUh6SHwHRwGDskLIjm8z7zwwdD5f3Ks7L7B/Rp36kVtajiWvMQFb8meuKbLgHzv0vRrmd7k3SB887iGfNOaRkZJfOZ886u+tNq06EBRfO6h6oJ+ocWh897/uKoFSyIWofmhzHzoPu4cGQVHq7Z86qSufPOriA7jHv8s4isR8XaJY2KaWAdtOfFovzgrNfFFZC06gaE98XIJflbPg7kGFIlMwSpgh20giUPBBggv8XAJaGHrtVAJSGHjQTbSGmZ4CXQCTt8iM18KISQr8XnAsfUzDFIJYSzYYdoJZCbfXw1h9glkwxFhxWHQHZaJer8xYfGEHolfiWBh4g2oiWjlD2HS7a0JRCp9qEiMX2YyiWxhwkOELIcJYmHMks8JTt8/6IysX2H84fP9iIlKYd5hxIl8YcM/IVeM/5yJZEzmM2oNmOHm4oNh7sxXIxmMzPAmiVum82H4uCF9volHqAznoINDHu0Q4Q9ZxvwKIibJmqQICOLtyW54iXo9iVfJe+HlUS5Ja4l9Xwfhxkl8yUhNABHYyR+JbYBe0nxJawzm6bYMZmEjCTNdqF5USXaJRShldkJ/tSMBbRGHg4zgZK3aGkEMYJXIKcl34dEgMwEaSRAR4gB94JN9lhHV9PoS6UlsKX/h5UlIFINJV68EEdVJQ0l4EfuAQswwyUNevzVGTNope0CMf7cNuUl+kqaRIMlmKXcqRBHAyjjJZxHkyVEpZIz4tGTbMRH2fJ4lJyJD8VdAsDAayVQRwYNlzN4R4WUGWx3FGpH49M6EGqJO4T701Z2FyXyRyZq54eTbF+H8LQgR320tXqMRw8lHSX66nBInyVAR4YxQeB/JeUltq5Jh5Qtm/HfhyLwkLG2kgypwGaXM+J2Iketpgilf4cqR2ox8Wh0JdBHGKVOR8BHlUSZ/v/FqUe0UVBEjDNToFJHyoDUpkkEXxRt/nZHhUeXM8uEyMw4R9iz68jYJGYekNgPZsglLPD5h9BYJ/Tk2iZHQKXVR+ZHCMCLh1ZH8LQ2R/+YdkesR932ZSVqHINH9evUpQZqHeDN6544OmoWRySDRktcpUxUj+hYWYW0wqWhMiaHu1tWsXylTFR/cctH4qUgpDtHFksqpWtHyqWrRwdHll17R7+gZ0fcswtHIKRLR3D7r1vogGrxb9hP9IEFxvG89rUQgvmbceYBOCgBEGgFx3Gzgapq1gX/R/D2FhCJIAnJsRViKLZ2lxJvR16Yv0dxuMOyPIF2lmf51vFXyO9x30VJsmfxXpgfR9rzzvHugYzxQNTJ8TE4+MdTSLjxQ4Stlp050fFYxyDL07MQx+qzdxZG+eHxdMf/gBFz1ghemCmAVeikx4goIXaNNITHdMeigJE06fEKKM12Z3m88VzHQxUZ3ZzxMrhQx4oSxfFfyCtxdvGIougoSMdPtJLHdMdWHHr5osdSx+THeXNwg3THiKJm3TDHoZj8x2/JOhVvsUlw9BAJyYrHzHHYIjLHtMeYRK4QNSB9KReZeET0xyrHWvGbhHs9Fsf68UdoAAWGx2SWQMfm8am6/XAylnnxARCTszoVdvFdFd5xcMdZ8dXxSXEUQGtUvMdI1CoFcfHg8cVoMcdx8TDxQ7PiBeSpF3HBx/nojMd6aMZANByUxwNoUGaO4JzH5AW6BUqzez24HLGWY1SCx0joacD13SSZSOjVxwfsqsd6aNG46+zl8W2xleb1dL3HemhgEFZUncfZx/pUrcdI1P0rWmCNx8nHiAXGq4ImnAlix6eGZ/m38XzHd3ki86IJWsfUJPgJ9pt0x9vHsRK7x16Yt4ZoBSgJdMfRJM/sJAmB9iE0AAXIahb2sbzu+U2pLgE3KMvHr+UJm1Mo18fr7Kfx1DglbJoFq8dHx/b5o6kdwXvHeVSSuK/xXpgumJ/HrAlaxyQwZt1gJzcoKySUBYIJasd3eQvxacdemOxGTt1gCVmx+bVMBVAJNPYzPm7F8Amr8ZhEbYYZ3afHJCdg1FDISCeYRHGOuCcT8Y95mlQo81nHQtDv+ZfH/PmRXnoFt8efGqIGv8c0m9WaPCcXx4wJxOiXnJwnUCfqcSfwnTmLxxRx58dtmE2pVUH2x1D5kPN2IOgOawhqljQJQPG1nGQnVgVnhAU9kidcJ9bHuid/tGwn8nE3QuYS5CcFhJQnaRKHx9mEiieREtYnsOykBeYnxb713cYnJ/kAJ/onS7EDOKInOYeeJ1d5B+y78eAF4j0nx8onHse9wC4Fkb5hs2AUjidCJ3j5tic+85jHFidqJ4AnGAWbINYFHr5Ws4Ynyoc4JSaz2H56JwyK3Pkc9VonxEeX+ZYnUiexJxz5ZSeYRAgnoeXFJ+4+4Sf5J1Ib+b7BJ9kn8bMkTaIn8HiRs34nPvNAJ1Un7ieUcfxxnCwuJzEnVSd3eePd2gn7oUZpKBX6CTgoIcBpC6+42gkrVJMnqgms8DMnSyc2h9qSFgmrJy1j1wAmCWxEsyeKCdMniyfbJ0ACagm6kvsnODuxPpo0qXEYDsPAqg3XJ1qUGjjxsfcnNRmeVKWxVOgHtt3d0q36cb/zis3+2dzz/ZDQ+ToY2HHd/Egse82/seSbHdFgHpWxOSLxwJCrWx0Dkntgn/W3sVWSomQ0HBFMrbFT/EdkkTQYGKiKXvOOzK3uvbFaG+VkFBw7sSuEs1Aj7AGSqko0G+FkaKeTsZYi9NwZ7Fcns/wvJ8hrr7FqG6aiis10p3n8wY67spSnY7HZVBDdpKeS83ISnTmAcZ8aWAirXTinXg7k0Hr56KdXsY8Ym13SrVAWiCLHEkDUNbGeIgmBgKfgp+ynkKdPJ+EbMqdPTGynvHNocAqgsSaEp4qb6RJqp6BxH/zVzHaqkHGJ+enG2+yHQugO28JyaPPHErb4cbQOLsCccUJx0W7/NvJUbUylcdIbx9T26GpxJg4hp60MYacYDnVGbJ1nVM4tzvna6AIBOebR+biIh7EfRUb5rj5XsemnPqdfMv8nAmAppxlgH3Hxp7ZxvqcWDjGnqiticdFuCOiLXZ6nym4zQNkotadvG4rdgacSAUJ7LPmFcdZudlDwSVpxVZK6e2zR3oATkslusvlGcdSbO8QGxTlxracDmZVdHade803AJaf9Jqybi3DPeU5xklI6aFpU2ejuFjqb5aeHTDMqOpu0JpSdfnGS84VoCadBcWGSx6clp2FxUhvbIN3d3MzMp5MwdfmNp8RMPuwtp1WS1af26FFxahvZchT5GXFXp1On5gYTp5sbg+iF7ABn8Rt9p/BJZ1RkmcOnqoJdum4Wg13/sjgiRwjfp26oXfwALJtdqugsyqqbkCDfy5enuxskYEhnH6e8c2OnrdFxccf8Q6e2KyRndCJdp8dR1yfV2MBnP6e7G3ubD6enp5KbwFUp+W7ou7EfyDenA+Qfcb3UYt0bpyhnQGcZ+SunvJtgdu2nOzlUIk22UGe5p+doBLAQ3dnou6eqmzPAjdGHpw4bvBwxIJiNo3FB85Ycp9HNcQ38KjRzJ+awb6YbKJNDAQEDcTLo+mdMyWZnEKjH3Ss4mmcBG/tAJsntcZTzDmcgJAWMxmfaZ/dHuDsTQE9HcdjC2QXdMMdpmDlG5gZfR2tzWCH93cDHhqUznRLHrZbm/lvoVRDgx7qMXWzl3aeldsfNbDvg8MeBxzVsvtTIx9iAef6nDHfsGMcQqqedkiedxydS1cAkx7XH7dK3nRVn2CLN0sVneXOsxxLss+A0x4lnHF5Y3YXH7WyeRZnHsyofKP3slcdg2LgYU11Jx0CqKRAmx7rHCWwFRoQkE8dAqsXdZvG4xxSqvWcyx1bHqtgSXQrHzxlZZxUibsfzZzVsDEaBstNn9WdLsw1UNkTVZx/xAWfcEQLHqPFdKsKwXseDx36lyWd58XbHEaWbZ7HaPmenYM3kWN1TdAIGNWyTZ78HpscTpZAQPcd/ZzUFs2cPZ99HT9TY+FXxYcf91HVGkceYx9zUKEYZZ9tnk9S03RZAScfw5yjnqcfwZZ3U1vmUx9zUUEZk5Y9ncNiWobnHRWW8OJPs3WfY7ADnFcfe8bbgjzGeVGjnPZ0Nx83xgaV3wIDIE8eDbHVNPbidxxznujFF8ctni6Xk56ayqSpE5yPHcccj1PrAR/uz8fDn6WdgqcznX9TbwHtrLgPpWQnjmqVgJ11sMhCv5RU+XUQl5G7slSdpmG6wO8eYCW/LhueZfkdE/d3kJ11sT+wk0q4noKoHXQ7zFJsrZ1cGK8eqJDjSLPAfZxEnWkRJS5An8kc9Z02gQt3JJ9rnNSLBJ1rnap0DkSESaue7mLLdEeeqhrAnYidq0ppUiCf0JwtnXKuJ59abCtghNLrdWCdXZ1+idCe0Cfr+zXaK3UQnpAkyK1oni/Fq0niQQNS8CennPfZ0J4fHc2ysHPAJMPFzKubnP8uTKi/1oicO59ZSVuf+J3wnekBqFP7nHufHUktY3d16513kBd1gJ36l3eci84fHDSon7DvlSee9pe4UoAkECbLsO10o88QnKypkELESPifY7MbIWidvx/rgVoTj53KbY1LWxnknt4fNKq6mRSe6jCsql+AnYhPnF5F0J5vHIaVl7MaopOeahkMnF+cvUu/s8+ctJy9SDByjqTMZ/+cj51/HfVKBS8EnB+cvUnPnNAlfZy2lr+c62c+lj+dKJ5AXIOwUUZXnoBd7KlfnZieJvqzgR+fqZ0QVpyfbKp5FGAIrJ8adX2Ook5HzmydkF+YJ0ye7pcQXcnW7J4sAqqQ2Z1Ui2gl0F+QX5fPAsrGordjUF1MnciAN3GQMHBfsEy9bXmcBZfVdZykGs9wHkhfRc85zMmUGs7j7SVSlswT7d7PE+46ln3HZyQ1ze6VJc81zpPuw8XT7UvH0tPMpbWV9c1IHTkSG+6r7cdic+0z+k3P8+yF+NhdW+5ezD3N3ydmlt3NXyWelJhfoZRdzogcuF2dzTrN1foGz3v72ZUr7l1gY5RGzlhfq+1dzNaU3czr70RdBpfdzrhdiQI6lk3Naqbn7Y3OxB2Q49hdPyeZzyRfJB3NzqbPLc0tzVqU6+6Dl63Pn+5tz+Qf/ZftzKvupF1UXdge6F0dzxKnNpaUXWvvGF72zbgfk/gOzXXMnpeOlUdhCB4hzKNhmc9b73th3pZUXGfu+ZRxaYxfLswMX+fukCeOz9Rejs2X7AdgPszdzHfuZcz5+M/u+cx0XHGX8c1sXUfF6ZYbYbfsB8chl7qWY2N37JxdPs94XvXOLs2+zTtJ3pV1zo/vuF+P7asa6Y1P7L1gIc8EXOGocZTdz4HPL+5bSUHPb5BCq8/ueKZHSO/tzc3v7eqn2/qhzjxe6cyUXWHO1s4HSkmVMZQiXN/tIl3f78XMcY0/7m/5VY6/7Jxfv+/b+n/snF9/7PHOv0t4pzxcAB4SXQAcUlyAHCFp3pY4XY1yvpTsXY1yK+2X2TJelB8YXCAc9F6QynRcUl5DIaAfH9sjcm/voB2DYOAfuF3gHopfT/FalRAeHc1pzT37kB3tz8WXUBwVaDAebZcjYypdDF+iq2QfT0qwH7hfsBycXUhd6lw5zOpdxF88Xcgd+FxSq5AeMl/VlLJdNZYl+MgfGF6aX0pdxF46XP0j3+9QycXNTFxoHnhfJc11zugeJfvoHfpeGB8YXxgdhc9lshXPF53SpKpcG2NYHm3O2BzVnJRfGB8tz9XM+l41zc3PU++qXbXNppTWlKGWDbKFziGWms44XDSoPs8EXEaVRB21lEaXpF7gXM/u1syWXuRfi5fkX/GWFF4RlxRdFsxznG3OEOBjsXvuVl2GX/FvFpctlHZdB+2WXvhf45bul/nPGDmOlO6XmF32XrQdJ/OWXhJGdB6bS3QciSDrlcdL9B8jYgwcS8/1Exwfs5QxQltKg888HWdLdhELl+akUalsHrvPsqmsH+x6wFbZjkuWoiNQyNamDqdsHCthY83sHpAl488uXW5f48yuX5wei8weX5PPLlzzz1PM/lxRq9wcChweXjPP7lxRqrwez5STYthQgFY7zpdI/BwnJP3MX0gOzyFfL0rnlPOVe3FnlXIfk0iHlzeVBwQ3SGIf15drxKIfV5Xn+pFer5aR6V6kO81SHhFc4hzjzhFdZ5Z7zd9JPB8xX/wdyJ6QJ3FqrqaJpDdJd5ZRX4lpt5YQkseXj0qrz8+fwhwBqdeWYaWiq9IdCV+CHvFffczuXU6r8h2hXgdwuqJ+XZCI4aUBXIloO5eSHpDJPB7RXpDIcxGD11DLu8zAV9n7O8xdEBFcklwJpOFezKqZXpvMCWh9IHuUoMr7lKldwfc3EmFcaVwyHtlcN0tAVllcQqmppK+WL5eyqgVdGJ7XAp9jRWgvlKwcIWlU5yocgwHn+7lfcV/FXWtgAFbOp0Vckl1nloZx6etbzLvM7QdZaeWJtYXHzYjLsFUaHNtJ6h+QVZqpTJ3v2DdxOhxWbpSJFVzHzjuIahw3cZfPCF1wXWBVV3MFpFuy1VxQXfySlV8VXy3T9V55pt8tWayroyM559cQ4tNhfLL4Mk1e7Cee1LTR8gIQQLaDLa9M+i1e02A7gTuhmPOHAo8g725XyhbXK2NNX1/QxhLtMbhaFQ5hoST4xJWdXa1f22HTRvgyTMISJh1dZYo7AsrYP27liZL4LGKamNPXXV2j2K1daxUtXTGi3dTFi71enVxgecmqUTOtsdlA76JKAS1dOQ2ZK31fUR511RLSuXJX2CMD5wcIJaolyQ5FVnBQiMY9XgbxQTCTsu1fKcqc+2SCfVw1K3YUysRtXgPXZcmoxlNf49cBVEiWQ119X8JAz/mKcSckNE2u2uNfw12wQVhVCtDDXOHVY9YcwW2sH2xVCszZc9nvYPhXQ1zJ2qcBZ7pLXLHaPV3SGiSgbq8XJpVtVBNYEN4NFPsM+kvik1/QMgdZXTJzRaPWrVeKLrNfKJvTXTqy77mzVoteK17dXB0Xs19wzh62W9bNXivh+Qy1KdLbmi+AQpDEfVbZRwkNo18zXRovCsBIVPuRnjFVsGdvKJovY4ouM4Hn12Nf0M0BwAddoCRmR3td75KImEz5Cpd1rDz5VQE7Xs+g26LLXZ/51RhgestfVicNrwhiu11NYN4Oy1+6ncWxHa88VBiYKM+DrM2vI9fQxT2s8YucmITGd6Ne9zdceJUjYuJUakvCJlev16Jwskf7e6/1y0JbLSe7r5JW/8DFro9f16Lu+DjOD17BE21fcSIVDDNTJ14ZerczbSMtJVis/crwxj2s3g+60fz5gShMVa9fYJbZrfIDlhMA2zccza+3XCf4nUeSV7dcE6xPrJ4R714GoiZW71/EzUevrhMvXHMsYHtpo89fU9tHoGoiTvkHrq9fIMW8x99cv17X2nu1pQofXMKU71yfX8Uc967ujbz4JIBLry0U0MDkOMusODNGC8uvwN5WVxNcTKDeDUSTI12EoGut915KWHOukHmuge9crK13Xl9fRIL3XR+p817PXBDcysZPXODd266nr5JVCIE7r7DcoNzyQHDbX1wg3I/az19mofT60N4vXkJX660A3W9ekpV9tAclSNyTs3Ddj6JQ3lPpedR6V/LEr62PXtRDL67IeUXXhvpczhOvLo9G+ejfEN45sBb7UzPg3vfAlvuUo2Dep4EHXVjeddWGCaokD6zxi1deL0w3rzjekNzXr5Deqgt32mlQQlTQ3LIa29YSofNcb67GjLjfMSbp2X+szBKbsb+vuMs9bz9Ff600Tn+tL0bd7kuyWXTE3iTeF2Mk34LJ0CEzJMTdRNw/rrZV58J5nsT6xRFiHTak+Frpe+anlN3GxiXR5VxGerJJ4sP6eKUrmEuRKaoqtNGdxWmRE+xC4orhZQIjo+7KZuPq0pIr6Sk9xJmQmss124iIkisI6tnYcCd5YXCSyEvVK2lSpzYuyejzoCZhKrbL2ys/SDFCyEjMqz9JVN8M3nHS9NwayIYp2SMemJ6jqEolE/YG0nr03DUjwip2y2hJ/Elvsiqn3N+1S6RJXN803UMizN2re5zdHwmnFeYrHN9pUvzdk+8Eq2lQMV9s3PPGD8ySe0zcaJMRoHLKTSh/xnTd/NzyKLzfvB6ayMvEhRBsHhrI9N+8HUqRHSl+0FRlq+8C3QewN5WT75WSm5Qi31aQIig1E2LcciBtSfMB2+9WWRhKjN7yktxQnN0hkxbIMhA03DFeQnlSnizelgdy30iJrN4ieukqbNxgQ2N5XwtS3QMrgIoc3fvsSKvV0pzcUt8wigrc6shKizLhv5TdpjaTIkjC3DqQat1W4ELdrYriU/8KfNxPpnFSKt+TQZOLzFPGyrqfmt5K3IVRct2K3R8L1xR/pwreIuFB1/LcPh8rnssuapWu0uugXRCP9O2Ia85yeMhLet1c39iRpSIwYPrdI12G3oFVvNyv9MqhbNyXk0iKmJHM3LBjMIh+VjSS+t09xqx13N2gJlCTNDGKyKbe2uH6KdrIJt1skPlcmCeEi6tQhspG3krjBt0Q6rpjgkjOmkLeLVxRhtbdAt//kHfyJJk231Xv5Ei5sa7JgdsIiDNTspLS0gpJBzJHYs7LY9B/xSbdq3kTSuxJMrSeoSxToCeG3TbdKzM+pS7d1tzF75RJ79syk4SJTtwteoTj/wmm3WDrehom3kmBjt8e3kbh5t32y+7fQko2367fDNhn8RzlNt+44PAlrtzb7sbevtyKk3WsjJPykxbJhhhwJl7f+so6cs7dAwGU4IqQ1/ZjioHdC0FZUAHfc+1WZVbhFt7+3ojaUkmS7kqQNUvCSJHWHLmh3N7d8deiesbe3lfqkcHcpUo+3+rdAZ3Acrbdgd3gi+Hcyt3gJ5SQL00bif7df22aHsxK4aIWEGAL2kBgJBmdaCY1Ak66UeN+4zHc8d6x3DBfVQCx3EJOWadx358mcdxIy/HcSd3x3dhAid3iTo9XY1rGAu6bS6u/T4iOKaqoSt0kvgmBY2DNms4McQjOoWHC+SEcqYc3IryMTFHHiJI7mi6zAEYrx01NYQeBZ04WRJJz2d/7Ti10oSAZqydNx6G53beJ508OsiZC9BHgzpzZ2wNvTYjNd+Np3Z9Mhd4rMKFgBd7GdzndEM8+SsKSV2fNqAdMAlx3T79NvhJpEN+KplsdR5skD0wx1h/XeHlughjHcq/6BJmqx8ePu5ncz05CrQXcgMwSorA2DWMvT8Q3QSfV3jCQb0z/oCXfb0/fTP4ndgTAzRdP0rf3ALnd80QV34XfJd2v7oOrX02ydo8B3088OE0y5hrwz59MYGEGCb9NiMxBtWeJcM1Yxvpm/0ymt3Xe2iqAdPbH8fiAzdDOU7tV3++I1sLXuisAwM2Qz/m0RAIXTzw6vrQZqvXeVDWTAr1rzd4gBRmAad2IrFsy4M+N3H4lwwGN3nXd22820pDMIy0utoXlt4lQzIu4qd+jah3cUrYAdOUdRwHru7QJfFMXihxIRTMVx/oprd693c3fH07EmmCCCM/N3Sq1pme93VR1+iDt3x9Pl1+V8DJgqUEYzmZlaBJYQSjP6M0GJMjVqM+kzWtQbd3izOLZ6M0bgUFHo8ghUc/RAUfBAEiSc8JORt1P7fEWBh8gSyJoUPTPvA8xU4BCnKX/+3PdbIvczhmBIUTWQlUTvfC8zrPfHoNkz/axM9ycg2ve090j3zzOyK1d0nSA/Mwy0QUSG93izxxiS92kze8JXBHCiCzMV0ZpxDvdgs+kzohBq9zsE7jOw7M53zjOhp7EQ1zNosxVKXUyBELTq4LPwSQswhdr69/gUoPdG97/uxqLvfDP2ahQZdzsEzxm/7lkQhZQM1JZx68gDM98ZcehJ9yMzBzOBcbr3MzPDGb/uBaZHh1z3ty0u97b3mdFsNpz3bvfcNrz3DPfHUbL3pSQ7M6orNrh3lIX3OKuM4HYzufeYzIW2xzO9M8grnffXM5pgCF0C96cplmDYK4r36vfG93X3ofcfM2ruyfeLMzy2pqbHfE73oDiWlh73q/fb95UzC/a96LP3nvdoHhuAovfy932t6/e5hwXhK1vf23o8YGBss/1x/ZAYpH7AlmdP90yzxnWfxAmBhXIf9+sn7VAbTD+gNLOuZ1/37/dadb/3Dmx399/3oA8f0W/3gA8jV/iTUpw7+vhV34ZRYES0G5V7YCgPtKhYDOgP2qhPZjLFyA+WqIrLR+RVBTt4s25D16SoT7K99XMurSLn+HpGzHg2jMr4eJK1qJjjZA9QeKqmyQYrBawPcskzckbVmaIbNFa7AqSS5LtiDgx36I4R7oh41Y7MiYJiD1dyqsYenDHoctViRr6cFagMfaEtU3JcD2gMpMWK5O5V+A8UeHZ1lA+sD/FXRNUaD7vGEsXDwJVgVqh2ff8k3VzmD2gPLP7DEQf00QxMD87GV3JVwI0R+7wMVZHAPNXDeCIExA82eNsMW3LYD0QQjL3OqHQQplXS8rfGFlUq1WOoQvjnhkLyQIjRD3fE/y7hDz9ySCwceOl4U9fo1TgQjL2MD4zy4iukTgEPvXjpNBwPF3IMsG7B8cDvqHu1eyFaRsx49uZ41SkPcqgGPiBVCCD/Lg0PbUIxD/sRNQ82VZEPFQ9BdaYPoi4aiMoPpMVeDw5V+A+uqIBmun3aDxt4s2J6DzZ4JQ8TciMPPBCaxm8hEw9YxCYMRQ/5LvXgrTJGRu+oPrAXlVUPaHhoTM+V3XnrD7oPjBg1EavVjkKRDwcPb6PZfjkuvH0hcusP1oBn9D4P6+CehC7Fyw/i7ljVCWAXqMzFvQ8zRWMPC6NzzHby60QQVaNRHpzfDz9y+OBW8osPBjcSDxLVNvDyD00P2K409E8PCQ9Ij2wP1UqnD4mCVw/eQpCPE3jnD7vouYVK5/mFG3T4kA/Ogn4RIXDArhHkj6QYGihtOKB4AP0+jESub/z4IZFzFHh+Dx+Di8hUj++yqIVOFmNyGSjyZD727S7flfJkAAYUeAYPEb1Fwdiu9A+XQZSPxMqB8qE7nu6cj7acj7bZBqz0BRGQfClVdyDPAxqPCgQ8eLyP8qjCj/Rp/y4uiEfkACw6A4m7Wv2XrPJT0Vgs/Wv7rhHV2LqPdo8vEeOAuEM3ckb8ssJ91uMRHQ+861dlbo/Cj9wTfo8V+MRMbeapxPyPtI/NDzWQR+T0fHbyiCz9zIKPUC4ovYNB+o/caWt9So+Akb9LLI//pTdyQZAij+aPvLiqj5KPF3KxLZoVIY89jgoEAY+rLiYMcH3ynPFYJs6ej9sROkUej3MWNo+Co0v2rqgKj9HrOUvlxI6PB2ghD4Js+o/h4I6Pso+Urgmgro9FqCAM5OvjEboiOaO+j5UQFtUizoIuXqhRj9r0U4+5DxyP2o/Tj4jBao8kgKSDbIALCke0BFDR8r1D8UxMg3uPgwq8g3KQYGIbzv3V11vzxVePb9E3j6RoYfIPj+tHifOt1ZJZ14/a0x+P586vjwXzT1bPj26gX49Hj4BPxTe2CeNXHj2NhlNXj+tdTL2CZILzV03JJ9c6/L9XKSZBh9bO2iXzPad+xtc9PUZ3XMK/hEAwPUxLgidXCLF0JQakhkeXVyRPiE83V4dXPUxhd7K20E8sJ4FJ+60hpru8VPaM16++kE8g9shPqBRBhwDX5SWYFNeH5E/fMcilTdNsT3kmQYew1815HE8cNsLXVwSgDrszqNfrTA4nGNfDa0RgBm2Th9RPxb5j07tXRGDAZkClok+yT95HFSDra02+CYK/M8ZP6GdNR2ZQ/xWBp733BNfelV1Mi3cc1/RPlE+F9ipP3E/ztgpPJqaOT9JPAZU2T3SLztcP3S5PmFj212JPL9PQT1rUetdMT+oNfnceidpPs75xUdrXqk/u4Ir4+k+pPUbXcU9TRo5R5tftvsJPftcaT2GitlHS14+5Uk+oWJnX4z0lT6bRUiX8T17Xnk9+T37XMdcxPZlPTqwR1x49BT3h1yHXNUxqT5FPDU+vvr49QOwJ12J+MU9u16nXhIRFgqVP13QoT+LYHnasHZNPQYmY1whPJU+xq9gkddRKYOT3Pp2V1/j1xKA115jrTvVBhwjrciaJIC3XDoO/mO4Bndei9XxbdvZ0N4G8Ak8o66X1pYAJayw3JeRNR/q0gNchSDPX2jcPPhuuPdeFQ6ysvKxnT7VVz8Ub19AYfQLb131OquTeMTtPu/J7SX9rh+iSgHiUZ9eQzydPOOv8N1U6TEf6N3rVtWg5M/fXIM8eJbV6rcy/T/EzdDfwEgzrKM+UAizr/08RTJjPZDdrQjjPhfbGN3kE/Otgz1CscDeddXSGKEdIN9SVZjxFRxzPBtcC1Fg3iNfPJRjXjdfYuYZPO1CxlWpy2uuJlUjPEjcYz3lH/usAjsi0E0kfT+1CzDcozw7A/kezZqPofIxkT1r+o+hcz5czLDdsz4I3ys9wz2ox8s96SgEYMs+1VZjP+jb0z5ZFqfZuNydCNs8DIFyVjKwZ65uDUnInbFLtX1dtgCtOETdZNyLMy0cxN7uYv4+6djE3qmrLR1/rEc9MyVHPfBZJN1frG3n8frk3Ac8hzwU3nzQLEqBPNU3ehkudlqBp4EIr7tvYyO/FUtvK26N4puIaHYKhBZ0dgrKVOqvpnbiQBjaQq9dSSIX4d16MjKFvBc0SetvS23Zg7c8zseLbBbaJ0HiMHNu5E7aE0DXW2y6C1c8YGBjbGOZ+Feig8OFXBY+2zNsh24sFuc9OKLEmo89MQUNt2c+P1Eu3XXfLYFCF1UCWmLYea89U6rZkE89LncfPHQdsWz6H1hMMge3bnLzm7Pnb4nZIdh14sg2L26B2k81d214db886Hd0dVioY/iHtCdvRS7AcaR0p24cTvqEOHXpgnbbTIPTbkEYk23fP0C8F26+2vKHF2+7X3MtAL2XtNdu/z9YdFduqosPZ2sC3z2tyHh2vz1EkbdtEL3W4oR1+HV/pHO39HYXPn81oHcMd2MikskMdwtf2giQvzR31bWgvs9ufzwcEpSi+HVwvU6Dr26YddVvDyEUdtZ1QuAbt9C/PSO/PqI2SXdwvC9s/zxllHWsThoIv/0hr2wGMq2B7z0ehSB3qLyu2ZC9oHaf3YyJ3QAdtJducdvQR95L6UnZgjYpn267dwbaWLwGMF7YiE6YvIe2iHTiihi8nbWwvb+wc7e4vfrgqHc4vLWW7zXjA9i9dZfTViZugO7A7q3SipJA7/xOntyg7ix2XWxEvpI1hL+v93odZZvsdwaLxL6FsqDtxL18AMUWYO1kvWodJ6Ig7KrbZLxcnieMCY6cOfz1lL5cOgL1mLDPkcBNhZLYo/EFwKjUvbiMwvd5RcL0pPIn4iL2tL50vkkFovetkDS+qQW56bS9uI2pBaOSOqml9ey4bNHpBuKqD+OS9kb3iCtS9Fb1b+J6q9L3LL3ZBzL1rL/SObL1jL5YG2y/DL/SOFb2AMLDR/L3uUCn4Y+P6Gp1QyvjhQUz979lSvXUv62QoOdfZ5y9LZGfZMo7xQSGZoGNpQUsv9qFpQYLZcmSbL4TKhL0ArynRHuTNLyVBfKKVL1Huqy/grCa90n16cNa9OeO8DFEoDM7Vea66S0BRjnDBYWQpTTe9Oy9evcp63aHrQWcOHroiFYcvTaDOvdbZS2SB1RG96b1LZMivM0HzL//Z/RUUr/0vExRCedsiwK+zQeYGuK9ZvUYMkK99vTgMhUZTjj9kZK+nQZz9ly+XQd8v2NUeHvxetAw5o5l962R92YOO3y8z2aEG7b39L6qZBb3xugSvf0G8DAMvPK/eavWyI717L+PZo44bjgqv8NLgwjO90mNbj8u9mfgT+PO9lK8ymWu9xH2nL5u9pTxHLzu9Ugx8r4O9CAx8r0e99S+sr7nPvK9egBe9Xq8ir9e9Zq+IDOf4n72Mr2aVLeOHsq+98a9UdaOOtq+GryqVmK8sr1Wjo73Ar1h92GRprz+9RK+T+LsPaq+L+Ob93y8QOQh9rKI9L2mVJa+xr8ZCfz3f2SbBKJmNr8WV2a9X2YR9neOyetWvfKOpr3ZdTsG4hi343JnyTgHqky9ewaa9gbpgr33Xpn18r0HMXgzAr3pOWVULL++VfcFLZHqv5k4jr9qvQVVzr16gyzQafetkKq+OTl2vq9mRVd0vg0i4vqev2tWmMX5O62QVr3JVRgyfL1XBxq+0suMPbn11r0f0Gv0trxRVhxLrZHSvncGL4+Kv1n3MnvpsVlIT41ivFFWGfQGvnUVufXyvCBNgbxVC8L0wb/MvfK/LwRgMwK+s1tOZm6/2PEVek6+RfVM8wK85ff8vmG9JfZBvJ8EMor5QHL7PLz+vmJQ3wfKZO7RwxQ/Bf6OLl42bZTAlfYdOrWSNyBV98L0wcFcvbG8Cuj457X3OZJ1VdswtfQDqXIYwIUF9myXN2ZTOZrpibyghxH0sb4YhLCH86ocj2324Giy5NCHYer0ZFCGVmVIxS32A/e+bYzkabwK6S5s4IUIaNoioo0pvfG+Hfal6Ao8nfRir5xnyOZd9HBqUOd19IH0PfVv0v8Yor0Le7G9C7vZvemSyb0d9/nhw/c3eAOrSjVohHxkgdyD9z71CbyKPoK8Kb/LOiH1Bb5YhiW+yaBlRyP2SGiCj1zhpVcfMWP122c5kHG+i/VF9l75E/ayicHCBIQlqnm81zqEhHb3oI47OWWpQEBs0rP1M/Rp8o45uzi8ZUPkc/fVvTsMWo9m9tkwUfbA+7Loxb+RkpW+Rb4Vvf72Sby0Vtc6yeoSQpo/+WZpvZ/Ta/RGZs7GNISjquQkM/Sr9PH2WjzjpDlvCDL0hLxnNiFuD2W/Fb2NvNlv7JCcy9XnSVWVv4lKrbwVvqsGRquxvYm/3IULqusDslSm9lW89a98eNW8JwschUH2sVc8V0yEzImoT7A96nvzqj29Uhhtq8W+qwQDvaBPpMCn93pH7aHDvt499ClgtiO/s5Ajv6f1gD07ZS8AwsnvODdWw72/RKJOcF3BZ6O+B/YBZpyek73VmqwrrCiIXsT6XWAYeyaOTquaY7fjuw0WA4NijzuRMbO9Zr4WqTO/A75rk3tgCHrGjlWxRft9v+uNZfkgP9OOY2D0+kOaQlIrYW6SJ8qSYAxcs+LXD7Yoo2MgsetgHqihIXO+4mKrv7O9ZqhpUqJV674Wl9Y7e45zvAsIa4zrvYvjgeqmYJYGNb0JZ3tiG43x6yaoFKetB4VmY2KGq7uMqQG7v5Y8QadmYzu9hb6+qmu/rQXzvFu9CQ/zKXu97I3bvhtjcjk6qodi/4DGFhu+U0rnZVlky/qxvye8PKR8jOEz6RGU+eOMhF+VBHO9+78JvgJgh70Lu5u+B7yBrqRiq79OG1u9G72lBDrwDFwy+EuNzqmLUwgyN74KApNhn5Dnvku+oBJ6Y4e9V2ZHvDGgKBIrj2Zhl77DRfhjF7wFGhu8U7upRsRjt7xP42xyQQF3vmARt7wPvMo4yXGPvwiw2OUTjKe8xNONDrO/p7/4rMe9Z7zo5qZgF74g4Fe+n76MjKu887y8jXOP6ROc+pFjD79d4x/j+XKbv4Ss89CjYyuPFhhrva/vlI3zjz34aviUjrEDj7xViEPTj75441e9T75IGvuSz7xo0BmNDGovvULv971wpvS+G7zzjshHV7xvu8awn752Y9iNZqtfvqL3N1LnvqarO5EQfbGM7FEfvPiN4WHTv5z50cvJB9u+CWYQfYB9ErH4Uve+ubVhYCB/EiSwfisyKZJIjgzgwH+G7M+8knHfkiVmsH/QjmJhi79gjhu+YH5LKeB84H3o7jB/4H9rK2u8F72IUoJiv72QjMu+KH7KsLB/776IR1qi+7+TjhMAKH4YfbsCViuof8Go3qiPvFh8XqtJm0GoS79pQYmRLwzn0itj5WcRYZh9WH6tY5B8eHyLkKu/673itAe817yAg7mLDF1JZK6MQH3JZhIKu6s9+9lmRH7xk2++srSQfd+8JxMEfFB/UWUjDpB/t+kLv5h+eH5ofoQjd+lQfSR9uXDiGoB+uTGXExmJrZNEf3+QGYuxk/B/9+lDj9e+dWcTs9u/PqsUfdvSV7wPhXB8mHwxYeCpMHwwu9B8HBokf3B8hxCnD4R/tw1kfQh8tw8HvK++jeuGjO6ob72XKoy7wH6UfuVOJH7ofDVNqH1ofalivqiof7bw3qjsfCcNl9KkfKcR5LtQfCcSPoo/voVIpxFbvAdi62a6jKeTZH3cf8gxMH48fFpjPHz7vGR8q+obvhuPAybIf3x9groOqHh/Yo/0fYRHV738fQ+8fH/bE4BRMHxijnABrT86YHGOkFEuacR8Z49AGOGWW0lVZpeoy7yifhBQgyNmYxDs6I00fCJ8L+JJjW960YzqYoz0/GGSfCcLOIz1KUdKkFDSfuKpEnwSfRuR4n2VZ2BQXqvif0AYul+if9J+7rBRqraGf5GPvv2ROY030tmMs+ASUbR8/boXZb5rZmNif2h9KaEyfMiNCnz55NSzkH5I8EiMnFLZj9lkm7ArvorGM2RL0wmMi2fUsWarnRsIf5u8ucJIRmp80lHoR5B+cnxgjnu92n/Kfzh/Wn08OplgIl7rZRfKpmKafLGSAFJSfivAm2bf8J5fJWdLkrIpan0pZPSz8n0TZE4kTLBxjbTtun3KfzB8m6nSfZoYI/DyfTCPj/Gmf3CMsHwmf8BLOH8KfTCN19GKf9MTL4hRq1HliFFKgfv0p0lhQ3gwc6IRq43nAucyRdZ/kFQT4tZ8qHJFtbBMs0212NtLB2WsorZ8hGRhqHZ8G04ACwFf8cDWfqPhNn+2f6waQirsAIABuQCgAKACGACYATGpFQEcKoACvMiAAAAASHsAuQMgA6ADsaocKROTzkIhomBNp2MUAB5/uAICKzVeXn2snbQAEAAAAXpwg5UDjmBngQ0AXClcKnCBqADOfyIAQAKufIADFAPwArABgAJYARwocai5AawrpAOefILxHnzeyJ5/nAPefj58W4N4AeoBvn1AA1woAimEAbQAJAPwAMNYBQMMGLkCg0ACAfACZACUAxQCwAFhfOF8MSCMGGQBMasUApF/wX/oAiF+3EMhffAAoAG5AbkDtAGVAYQCRAAcKxADMSWwg6QCZANkAxAB5APoA6QD/n4BflgAWAA0AOUDrn1ufNIA7n6gAwgCgAJBfh27QX8vSOWPWAGefKABHCtef/HC6X8hoRQAPn+FAz5+LAK+ffACXCqhfH5/SAF+f7Ei/n+JfQF8gXw0AfADgX7cKRwrAyWcK6WOGXwhfeoBIXylMFl9oX+8KGF9kX9hfpxCw1lRfBF9JAERfNF+kX+RfoV+4X3DWTADEX7RfXl8MXz5fTF8pTKxf7F9gAJxfCwDcX0wAJgC8X4+gAl9ZADkAIl/uAGJfAF9AX1Jf0TqyX5rACl97nwUAIAAqX+5fMF/pY5pfKl/6X4wA+l/pAClfbqImX3WAyGj+X1ZfEgA2Xz+f6wr2X8Bf+gCgX85fIAAQX9pf9UDQX4S4PV/0X+4AjF9WruZf758cAIFf6NbBXxRfeF98ABFfLkBJXzFfIV8WAGFfR1/RX71f1wBrX8xfTACZXxxf+gBcX+ljBV9EAHxfxxDFX0JfuQBHChVfEl/VXzJfryybnwjA9V9KX01f81+ukWpfRaqxQGAAWl86X0uPXV9Lj8tfRl99XyTUA18oX2hfn58HCrZf41+VX5Nf7gDTX0wALl/5X2DfUF9l3JDfjgArX9dfaV/rX0wAQ19bX0FfsV9nX/Ff4V//EIRfiV+XXwzffkBM3xdfJF9XX3oAN18ZX2xfD1/uAE9fOWMvX29fqQAfX6Vf3198ABNff1/dQOufAAAqcl8iAMDf+5/E3w313HfjBlDfMN/6AJ8KZdhdX7asBl8U33oALliMAD9WaN+cIJPoo192Xzjfjl9gX7Nfrl/1QCsG+snRQIjfj58A4CMAvmk035tfOADvCpPojgAc30wA518HXyzfkV9s3zzfgd8gAMHf4d/JX8bfcJDfCjmuLF+C39lfj1+5X89fhV/ElBNfdt8zX3Nfbl8LBrYgLUBu3+FAmt9e3yAAtN++3/7f5wCR3ygA57oh30yQrN/UXxHfp1+c35Rf3N+x30jfIIpXY3CQ6QD3Xynfwt9p368KaQBRX59fZV/XAD9fVV+tANJf8t8A3wAAwkSAqt+NXypfuB50JkDA2t8dX0IUsgB637IQRd/uANMgZt+7YBbfnkCLYdbf2N8SX3bfud+EJgHNGGrFL3BfHd/lQGXcRkVl3z7fAIpNpDtfkd+WACgACUCBANYAdgD3oCjWnEgUYFhQ5DB4AEEASd9ZXzlfLwrp369fGSJZ31NfDQAX32wmNs3qkTfft59332sont/mReXfL9+b3Zhfzd8qhJ/f39+2AO+gkwYAP5lAQD/I0CA/LkC93xA/Cd+D35Lfwl/S30wAst+T3zVfs98DgAvfewBL31UMjvzgU2vf6t96355FBt+bKzvf1wB736IAB98bX5ZfW19W35jfY19can+ftt9wPw7fRN9HCpZ1jvypOVhovN/oP+EAj99YP+8KomRv33g/VgAEP5kARD9/3xxIg0DkPzJQlD9gP0Lfnd+QP6LfGd9vMrA/eN/wP47fqCbP9vJ+z/YiP/ffS2G6P8/f+j8UpAHfRj8f31/fpj+/32xIFj+AgFY/BpA2P3dfyd80Pya1kIr0P19fol8y3zjfct97AOufc9/SwBw/yl/q3w7BVbwA63w/Ol8b30I/29/k33ffYj/R9offCxUn3/I/Lj/XAKBfCD9ZFmaQhWAtRVo/D9+YPwE/9N8hPyY/P9/EP//flj/DQBQ/oD/xP+A/qd8OPxBfTj/HNI0/egDNP+4/fIMSkcU/lT/u310/g189P4Y/TJChP4Q/ET/I1lE/gD8jP9Y/Yz8gANQ/kz+0P8k/w99S32k/TD8ZPyw//19HECAAOT+5fUwAu58g3ypfFTST3KuWWpDtX/w//A+3VPDfkaQ+P6Lhlfncg1Pckj9oXzI/+V9Y3w0/ij+uP/bfLT/8kAjWHZjfPzSQvN8I1gVjEL+cIH7fvT/bP2Y/dd+nEA3fx1+7X3Ffrd9RXzzfxt/aP72ftj993/Y/Fz88X9A/md9wv00/Tl8E38o/oN9HCp8/X3BI1qg/j58Yv+ljej+V37g/e18JX0vQRL/s30Y/0d+N3+3faz9+PzljZz/931M/Q99s3yPfjD8KP79f9z/T348/AACKdV98AG8/at9HCqgo89ardMM2JT+633DfAIqQ5kbfaD8mX7octT/hAMffsj8232ffNz8cv7204MCZC0hEPj9PWPvfZbx6P6/fJ9zCv6cQAz/4X8c/VD8JP+c/ST85QHM/iL+FtJ/g61sLMD6/Tq6MGA6/nwo4PyS/FgChvwS/RwBxP6c/kb+Kvxc/Mb/Mv3oAcb+evzQVqvXJvyIIqb9Yv1tfgb/BP3i/ez/APyc/Cr90v9G/3UCxv4s/LERwcCp2K2gU+Lzfvr/iP/6/AT/1v1XfIT/4v0wAoz8RvxM/hb/tv3sAcz8LPyo/vbSYFAt2lJQ+P8zInt/MaAG/Gb/v3xO/zb/Tv3Y/zwoD39M/jL/OPyW/i7/uv5vEgiTxyIN9Pj8TIEhfWGjbv7i/Ib97v1O/NL+JP5EAxb+uv/C/cb8rvybIDB5JyOi/ohk6P1u/I787v+O/Tb9vv+M/h78i35c/Kr/XP+Vf6T8av0wAU99ZPwDfAACqQoB5P5e/7bRXKNLo6PDIaL8/Ol8LDJvfoUo2v4+fl1CfAPhwDr8Y39C/cj/XAKAAC79uP0u/m8R3Ir0OnuKrP8Xfn3DGIGm/z79Zv/0/e78kP8C4UH/5vzO/bb95X01fMz9fvw5fSj9xv0cvYfPGQMC/GogJ3xT4ej98f60AOz/hP4M/Bz/oJCJ/rb9Hv0q/Hb/nv8x/OH8gsiGv+H+NREp/3H/h82p/Wz8hvwJ/Tb9CfzGYen8Fv+J/fgDSf7jfLL/svypf74uaUumbnH9uosp/mUCqf5s/Qb+Zvxp/Dn/af6jWbgQuf2J/Bn9Fv0Z/379ef3J/5n8gAoG4Vn+yADx/tb++3+p/+D9hP9m/+z/Rf7p/4b/vv1G/n7+JfzJ/P79dv75/W90cf7ffaz/WfyF/Uj85f3Z//H/5f4J/Qz/OfyV/0H+0v/F/c7+Mf8Z/3n/q38WKulILsOR/XH+ZfzZ/oX8Nv/Z/7X+Of51/MX/df6J/MH/Hvx5/59/Vf2x/0ui9pON/gX+Nf7x/rX8Rf3N/UX+kPxWYsX8rf4Z/87+Df2W/L/AWf3t4GX8qf/t/YX/v35F/5j9Ff6d/S3/6f7B/a3+yfxt/N3+xBXULvL8Tfw9/2X/oXwd/eX+7P8d/wn8ff65/fX/lf5d/SX/zPyZ/Pn+bfwQFCKGdP3t/IP/bX09/fT9Hf69/J3/ENGd/vX9ffxV/nn+I/0N/Rr8o/3qzHT+Uv0F/WX/e381/oP/Y/9s/L3+RP29/BP/Q/3F/xP/w/5V/yX/Vf/J/6CfU/2g/tP9Tfwz/WP8zf21/EP94/1D/sT8tvzD/XP8Dfwj/F78+f/z/N1Q7f594wv9NfwFfuX/GP7j/rP/4/7ikhP8fv+5/KT+j36W/SH8T3yh/rD+PPxufAADK25/6v4pfhr/GUEV8vUNL3UR/ut8qEpvf2hI+P3W1+98tRVg/UL9NXzC/DH/qvzz/ZP+Iv1EWK87pjkp/bYzuh0/fov9Cv+F/4P9af1L/0T9HPzL/B79E/8e/DL/i399/VX8sf47QLv8fIGW8nT+x/4+/AT+J/89/uv+Ff/j/MT+SkHm/n3+rfyb/ar/MP5b/Dz8WAJh/8l8O/w1fnD8FP/NowRkaX9DfHV+Wv+8K1r/Av3a/m3n0/2hfgb/1PyH/nb8F/3KQOkXFrl8yVb+yADW/U//Yv6O/wb9Zv6+/HP/nfwl/3P+k/xH/BcCciFhxav96AIO/6//x/wFfW/9J/65AkH97/1n/F38K/2H/x/9+Ccv/Jf/G35f/Ma4b/3W/4H+Nv++gQ3+ZX93P4k/zVfh8/Yi0xFAz/6r/z9fhs/UX+t/9d34P/wz/qV/Wd+cP8X/6k/yV/n3/diAH7JNH7G3w3fiB/NN+8ACIP6AAMf/kb/Rx+p79Zn5Xfy7fh/OAf+d79uO7wIAIAf//F9+iAD6/6y/05/qt/UABP38F/7DYFbXGdAdd+wH8KYAMAO1/gV/fd+yAC3P50Pyufgw/N1+rf9QL7t/0nvkDfbv+7z91b7J4Roglt/STA5r8Lz5rci9/pZFHx+MExGAAQbAdfjP/Z1+p98w/4YALzvpHmTSkx+tAf6BfxerILAQQBYP8df6S/z1/sM/HN+L6AG/5y/2z/vlfKT+HAD8/6mfwfgAMOVQBlgDS/5YUFsAZj/QgBzP9q/5WAAW/mQ/dP+LADM/6kALg/tRfVV+UgC7n5t/y1fhYAAAASjGAbD+S99NSYoqHU1u7/C8+qmpN77pqWTfm0/K+4IP9aP5B/3o/gYAUP+6ACkf7DfwpMuFMHjw5/98hg6PweaLZ/Jn+s39HAE1/2cAZO/EgBwACyAG5/28Abz/Bf+qXIFhTNAKU/iKhDB+j39xf6Hf26AZEAnT+/nAXAHnADcAWwApV+zf9kgHIfxkAWkA1oAKwp5AGvP0d/ovfJQBwopiKDJJHUAdcAfR+4BsX74NenP/qzIRDQHRg036B/2/Pi6/EwBrL8QACE318AfwQC3YTOxz/7MwD0AX0OTH+Bj9OgGM3zJfn0A+u+Yd9pX4nXxFflRfYl+X/9gP7MwB7vu4A5/+tQDs75sv0RfpaYIL+ltIDtDJvyFIAiAwEBQT8x37QgLDfuCAtu+UIDSX77XxjvnRfKp+8ICAQE9f3iAXn/Lz+Od8u37oJ2+AW+2HEB/wDQP6i/yBAbMAoO+XN9lgE9QFJAXf/KV+sIDqQG4gNpAct/J/+B/80AGogPeAeT/cKAJwDENAey1+ATSAzkBAV9uQGEgPJAaK/Q6+5L9kr6R32FAZdfOEBYoDmNCN/2RAUx/BF+zIC9WZ2riVAeyA7AAeIDf/6+33VAdv/Fu+FICxX4QgOJfnqAvkBlICB34qgMRAWsAqUBKIClH5MgIX/hNnVkB2ICAv6iPx9AfiA7X+Ur9tQFegI9AaCAyEB3oCjQG+gP3/v1/AMB8L8gwG+AKBVFaAuNqNoC7QHX/2xfo6AoUBnoDXQGCgPjAS6AkUBj58/gG2gPFASaA/0BZoDMwHNXy+AYqA3MB4YCL/6RgPtAQCKIsB5YCtQGh3zLAZK/EsBlYD9ADVgPzAXWAtMBDYC0QHMgIVAbNjeKKvN8bYCMABtgGm/bsBRADiQGEvzdARK/IkBOoCqQFrP2p8OHzMcBEn8xb4wP0G/o2A44BIph3M7mRTnAQsARcBUYD7AExgL7AVuA4sBCYChwGBf13ART4fcBIADD/4ygI+AU2AkKk9uJwX71f30APOArgAAr8An7LgM3AWCAtcB/YDwIGJgJp/q+AlMBkoDxwHHgMnAcGA5sBFn8LwHG3yAgdeAzsBgT9owElgNjAYmAnsBMICDQFC/zggaIA2H+H4DpQGBgOQgb4Ay0Bf4DZwEYQKvASBArkBBICnQG8gITAfhA90BA4CnwHEQJ3AZ7fN8BSID6wFIQNlAeiA2iBaEDz/6YQKYgWqAliBj4CXQEcQI3AZqAoiBFL8SIF8QPggfSA4YBZP8TwFuX2zAXRA8SBjECcsZ6PzAgQpA1cBFgBxX5N32ggc+A9X+pEC6QEDANo1J+AqiBwkDmQHaQLEgT7/PSBS4DpIGEQOMga0AUyBuoCuIEVgJ4gcXfKyBEoD6QEbAMQ/rc/LYBqH81z4A30yAZ9AbIBSgDHrQcVAkKOcAv4UmJ0ur4lALbAYc4T2+AP8sH6VAOeAcYAuoBcoCZ+rahkC0sWWSYBG25S74dAJ5AQ4AlP+TgC0/78gNgAKsA1MBB4CvAF2QJ8Ac1fcSwK3kSoFtgNaAQDgGYBGoCJf7VQJ6AbVAiCBub9WAGNQON/hIA1J+oUDagGZP0igY8/HJ+v5oDgE9/3yfka/PD+GJok5AFAIuAWU/F++wj90oH/XnEfqZ2LB+hgC6P4vAPygXG/dlkMQEGShdQPWfnYA4EBcwCBoELALZ/nX/EaBcQCbIE5/yPAYr/eoBRr9BEgRAUugQBAwL+fj9un5wAMYAf1A4QBTn9Dn51QIagQhAz9+IUCx77m/0kvpq/ND+jz9ooGx40WgYoA1R+f7BKIL8jCSgQI/EQQ219skqlAMRqOUAzsBOUDg/41ALNAYi/HVyJEFvmAtAPBWNMAzH+QgCWf6DQPBgcNA1wBo0CoYFQPyGAS1AkYBpn9RnrkFQ5AuhAoX+UwC2gG9QNYgVVA0GBUQClgEswJWAWzA4KBE0DTf7j33hgakAxGBFgBbf5XQFigZy/VysBR43f5D/34fp7/IR+Ggk/oHXAF9/uI/f3+z98ngGkwMoga1Agp+msDtNZL3VL/rrIOP+gr8GYERALBgdEAiGBMsDXoGeAPIAQyA8P+VACbYHZN0//kL/Mv+jwDnYHzANdgZLAkQB1kCUAHjQPg/pIAqaB0gCIoEUElaAJkAwJA6sCQgCqpEeUBP6bGBRQDUoHaAN2gWUArKBZsCSYHVAMtgdzAlS+Vkg+YEYjBpgULAnqBmP9K/44/zDgRLA9Ag7sCXoHRwMGAe9A14BBUCdk4ZwJ6wu0mUqBDsD2gEV/1DgfdA8OBzcCpYFtAEhgbLA2OBk0DYYFhQIt/tsA5WBrQBO/6wnwUAU7/EEgpVJivg4gGxgdpQTe+0ZJgX5alBfPqbAhn+5sCS4HpgNngaZ/V1gnzg6FIuQLxEOgQEOB9gDhAFAALbgbZA0uBZv8uAGAWBO9r9AqwBRsDjzBMXyXuk7Ah+Bu/8kAFRwLEAS/As+Bb8CL4FITCAdnD4NsBxGgkL7/wKHgYAg5gBz0CyIHy/3AQW//LxIaDt5QA3wJsoHfAuuBQgCgEGxANQQewArmBvsD34EVinWtraMFyBu4Ck5AAINugS8sZBBrMDW4GgILegUy/D6BXcDF/52kWdUOf/S1gkUBHYGIIPoQff/YgBwCCgoE2QJ9gaYA7xgHHB7/pHzkvATQg++BgiDH4H9AOfgcq/RIBCH9z4EJwKt/hkA9h+q8CjgFGv3i2q85BFCG0DkoGDwlzgfjA/OBhMDC4EJ/2LgSdA9b+C/82pjFHjJStXAsqBg8DmIHDwPFgYsAseBkcDREHPwNYQWe/dhBv78MtqrOAbaP3AumB2EDDIEgwI6/h4gp6BTCDiEHrALlgS3/FIBC8DZoFaIIHMDog3v+Rr93cbyfmVkqefde+KUDQf5mIMNge2AguBsAD0b7WXyMAbC/fxB1X8U4B98DN2IB/Gn+NcDyoHTfz6gXdA9xBj0CYgEoIJAQeRA9uBbCDO4EpfzRzFkgrrsnT8GkEuIK1/g/AxmBD0Da/7tIJiQZ0gr7+MMCIEEaINkAUwAFOBC0CQAAGv10Qcu/GaceydDEE6wNKfnkgvGBgcCqwHCQEygSUgy2+1iC8oG2INM/sjRLcwS0AnEEDwPkQZVAzT+rSDJkEtwNiQfS/L2BnMDX4ESIM3iEeEJZQGlQ7YH1IOcQfcg5pByf8nkG9AK8Qe+A8QB08D5YFwwJmgUnApZBMGQ04FUFTk1BEBA2BrkAdb6FAL2QWlAwpBGUCdH6WIICvifAmxBnADTP6jqT2UADYCIyV0DhkFuQLcQZEgtpBLyCZkEeAMk/t7A9SBXyCdk7IoLyAlpGW5BoSCCwFbX3CQS0gmlBzyDx4H1QI9gcoguZBCsDYUHrn11fiK2NJBy0CMgJNCWK+H1gbGBI/8x/5dQIn/mkCQ6BTr9joHnILdfsj/L1AfS0kuzQAKHficgv/+BCDGEHSwOYQV0gsBB8/9LkE9v3Adkm/XaB1b8f/7coN9vmEApgBwiCiEH0oNNASW/M6BFdE/ZAuiH7fnCAh1Bw78gYEmoLdQR0g7xBoCCfYHXf1lQH0tP1BBqCr/5PvyQQaGg6ZB4aCLUHiIM+gRsgj6qvMl9dp8ANZ0OKAhNBCiDCEFhoIhQSe/D5B4CCWUFhATTVozTBVBbYD735MX3L/sGgxNBnkCzUGvIMQgZUguxBf79FgziBBzQZu/G6BDyDC0HJoOLQSogwS+aiD5kGJIMTgeufAAAImrA6VBxKCWCYWgjavjsgj3+945toEn9GoQWv/KLa2ECCUFaoKtgUcKfY8gWkNUBKfzKgUGgqSB1KD5v5RIKmQc2gj1BbyDGUGloPJgV2/PdB9mkHmidPyPQUagh0B7kCG4EjwKbgdEgy9BKaDZkHxIM2AfPA8dBbD9OoCIoML/sRQcwg2cD0xzlPzSBN6AvvgNT8Qf5HQKqAYSgndBo7BlcTxGU8vvUgjB+r6DsH6noMh/kNA8FBAkCkn6+IIoAW2gi+B9rwaAEUoKwwb2g4FBYsD+UFgoKfgRGg0VBMKCEYHJIOTgdNUUDBjOQLraqQHiikYgnGBxQC84HYoKOQbig7DBiGDcoEVIN6QcyAtAIc257ID0QMFgYCg0IBwMC+UFnoNpQYKgyeBnsCb0EdwNOgZJgj+QzZ9uJ4hIOFgQpg3DBqf9mYEEYL9AdG/JjBc8DFYFJILhQSAATIBpsAOMGvrCagBHZF5Y6KDNoGYoIEwd/AopBFiDsMFboPEwVpg4MBHhpw7LPIk5QQZgzdBRmCaoEmYIYwRag4jBaaCOEGOYIwTCIYfTBtcCwsFjIJdgV+gi9BE8DhUGMYP/QfHAsdBmiC2MG4gAcwXjwbhY2I5IMEmIPyQQcg4cBQmCPVAGAI1QUhg7dBZcC4oHaUGrPqVgilB8mDsIEuoIiQcpggVBpmCxoHdIL8QRJggLBthRRz6tYMKQd1AxpBDaCFEHjINHgd+gzLB5qC/0FQoISQeFA/LBTAA575qgA4wefUAZBZWCsKBb3xgwXCAuDBEj9OwG+YLn/pQA0YB1IAasyTAKowfgg1LBjcDz0F0oN/QQygw8BPSD/ME8wPOwZrMOpBgsCrsEpYKmwWlgu7BqmCssGpoIswdNAljBNmCU4ErwNRgWvA7uBRRJ0ahJBRcwbkg8rB+yDlQHFIIdfsdgsmBp2DiUE9wN1JM3AJLBE2D8UHhYKZgW7A/7B82DHsHNQM+QemgqgqmOD/v4hYOSwU6ggEU9cDwgG3YJUwb1g9mBkKDVEFxwPUQXlgxZBIAAp0FSoIhwesghrM+0Biopw4N1gdDgldBlWD3AC3wj9/thgs5BfmCLkFL33VmPlFc/+KUAe0H0wMbQfdg4tBMWDmUHk4I+WEVFfyKSuC0MECANVwQWg01Bc2CW0HQwJywRzg5bBXODooHg4NWQYcA9JBoFBMjiJDC3ijkg/h+OcCKsFI4O8wfIg2f+aODSMHgAKdwRt5RsMOOCRkGFgPfQQzgz9Bf2DmcHxAM1waQg8tBKmAFhTD1TGwbTA0LBtOCcIE3YIjwUzgqLBC2C2cEzwNHQVbgnYB8KDt9YzoOV/jdHEVKaeAysG4wKxQZ5gnFBNWCKgFlIM1QbLgolBPn9vBQ+aXLwW1gu5BRuCHkHTYPSwergwjBTUCmUGx4O1wUp2aCKreDaYDB4JFgXf/R5BdGD8MFZ4Kb/hbgvPBgGCVsHc4KpABxgh9BaUVsYEMyD74HrfVdBsCC5O4mwPn6HQgn3BZOCOEFr4LKLP6goX+L6CqUHp4NBQTPgpRBLCD3kGaYLlwerfU/BdNQn0E0/0vwTeAn7BjOCesGz4LiQYtggDBVmCgMFIwOtkEVg6wIhTdH2AV4P4wQUg6vB1WCiYG04JlwSdgv3BcUDI+zzzggIe3grlBFUCaMFT4O6wfRgu/B0WCH8HPYKfwXnfCqo4/Q9hLj4M7wVgQ7vBkeDf8FFvyBwQsggvBtmCBrAcYJJqgsKFHskBDTEHi4IjAcjg67BI19ykGIEMGwZAgv7iu8VOCG+P3awang3lBIKDp8GRYLwIbB/GPBx+Dj/5CEM76v0eanBuODQ8H44ImQbgQkRBg6C6CGc4IYITzg8O8duCloE8wNbGJRBQu+ruDdkFn6CEfvQXQTBUtBpkA0f3rwfVgxvBKGC2EzVV3OcH31K6BXzJgf7YQPUIaPAg3+MhCScED4PkIV2/NHGfMC6khKf08IcF/CfBVf9v8HS/3dQQ9gz1BSBDVH7quCpgfagcIh/HA6f6p4J8IU3AvwhWhC+8ExwJzwdCgyzB4qCooECYFAIQ1Dd9E7BCPcEEwOOQfYQ3ghDeD+CEvYLagSgQmH295FyCHeEOvwVIQwnBUeD1MFPYIGwY0QprBuQlEhgf4DaIZkQjohOBDb8G5ELMwebg//BuWD88GLwMLwSrfYvB6t8TdrEnFk0JUQxHB1RDhMHe4L4Ib7ggQhS98VrrOaVXwCoQkPBPKCw8FdAIzwT/g/whUz85CFloKHwSsQ+T8A7gRiEGQLOIV1gvDB0hDJiF9YISAcOg9nBC+DACFL4LWwSsgtZBDuCGsxX3x9uCg/XjBW0DdsFI4PXQQdA5++omCLYG3EI4QTYYfyMYJC38GfYLaAdhg9N+WRDqCFXEOvQb0QkjBexDliHYJnNmqvfSjBGJDqMGiwOwIW8QrohNBDzMHz4LFQSDg9c+dmCJAAbYJXIHqg27c5hDdb7u4I2IeYgmohdeC6iGOEIaIUQQr9AWeFqaarbnQISngzAhlJCqCGZ4NxIURggghfRDhSGzAEoWizkKRgTxCmkHSkN+wbKQj4hLOCviElXx+IQyQpWBrGDC8EowMMIWjAsiIMW0BCjbINcwcYgyvBHmDYMFe4P5IUfgxEhASDH2AJbXU1kMgsQhUpDJ8EykMuITqQ6PBCpCCSH9ENUfj7kB6IVpDjiFREI/QTfg94hcRDtCH0kOYwUaQmzBOT9mJJLENUfslMcLYdx1hcG7IMEfttAip+gmCDsGwkKsQQ4QsTBQpCm8HLEPTIbbTIq6SeCAYGYkIkIbRg8YhMZCi0F5EP6wUGQpUhsDQHMq3HSrIZ5gql+/j9XEFjEOpIRHA2kh0xCCiFLYMXwVzgnnBixC+cHAkPbaF1SYy6YDxOSEYoJzIQI/EQhYj8zgFOkJ2IUEQuxBmGAldhJUh8fsrgzKA9aDRkHG4KTQT+gwdBWuCkSEVrXMuvOQwpB+5DiQCRkIAAU2g03BV6D5SEaYMIIWWQo1+25DzLr4gD3IWhgu8hFBDKSH9oNPIc2QvUhSQDZiFjkIYISnAychZpDIcGTdEpwb4aOe6C5C3MEI4KrwQ6QvkhR2CECG7EODIenA0XBJ65Bf6yvy9IQIgrvBWpC/SGxkOAoTcQu9BC/8K4E/QI+wfhQjvB32CiKExEImIaRQqYh+RDviG54MNIdZgpkh+wDoKH84PO9m89IjAvADEKG2kKgISuQ2AheKDOEDwkNPgRRQnmBIVJPuACUOY0J6QuihqeDOsFKYIHIZ4gochHMDH8HvkIGAPWyBKBx+B1SGTYIYoRcQzQhzFDPiFDoP1IexQhMhnFCAb6qwN5wTxQ6chCPgZWhu3G1gTaQy4B+0B9YEiEONgUrIFHBGFDNyG+AIz0LbAmmBwcCeCFGUOjITSQuUh/eDb0Ho4OavgFQgOBQVCHYGHkOxfvTg84hYVDByERUNYoRZQwohwODEyHZP1KIamQ4yg/IMg8FCUIEfjtgiL80JD976FkNKQQKQkshmFC2yFIv2qwTJg6uBX2DRiFf4OMoUxQpshLFCWyGxYIj/pEqFkGRVDqyHNUO9IdEQtqhjZCB0HAUPMoaBQy3B4FD5iGMELmgGUQgfq6TAHmgQkPcwdAQ1ChWxCEMF1YJqoX5QtqBJBCN5y6BQMoTf/RTBkhCGyHhUP9IT0Q0nBLpDmQE7dHWENjvNEhtFCMCFgf2xIdqQ0yhupCJqEjoI4oUAQiwAAAApbihQJCZUE54HWxqAQFKYvGCNKhe/zXaDwg4bwZt8vHDbEPqIbVQ+yB34CCn5R0lzuGCgPgBTwhs1BX4MEQXeAkkBD4CPIEPgNwAXGwcR+R84NcGBkNiwZpAl4gSND9RDn/2zUPvfI+czxDcIHsQPvAXGA3yBor8LIEeAAJoejQs3BmlC3yEZgOogR8/dbG5aB5+hAfwEoNIoDGhlUCsaGQQJxoczQxSBMr8AoEqQM5oYPfc8hZNCAaF7Y01mKk3QpB0ih976a/zUIbeAvCBjNCCIFS0MFAbBAuWhz5DUAGIkKVoZ7cFWhFO91aHJgE1oaLQmjB4tCTIHrgLMgUZAvGhykCdH78QM6oZagoSBCNDOX7rY1D8HwA4WhIv8T0E60IZodjQpmh5kD/IEvgONofEQwSB7CDzaHx3BVoUH6AOhttDP8Fi0N1oWHQ/WhEdClIG8QPdoapAsRBitDeaGI0JVoTVjZOh4j8taGnEKeoSRQx2hUECXaFegKNobnQ+WhXtC46GF0N9oYnQoYogtD8aGB0PLoW+g+mhskC9aGcQKzoTLQqOhDdCTaEUQLNoS3Q8mhidD0Zyl0JFoanQ+2h6dCJaHh0NroTBAt2hiMA86HKIILoQ5ArgB52NNthU0JtoWXQu2hosCHaFeQKdoT5Aweh24DZaEj0Jjoa2gzuB8dCFrg/eDGuClMIWhKdCwkEvEOdAb2AjOhA9Dl6Gs0MRgNHQs8hg+DzQHb0MToetzGehQdDtaGY0IXodXQyWh59DOn6BQP/ocfgu+h52MVtwd0LvvhrQg+hc9Cj6GQMJPoTXQkEBfkDs6GX0LXoY3Q0mhE9DlaFXYwUTqAw7uhXYC36FsQL7oZ/Q+SBuDCWaGR0MsgX/Q8ahm9CfaGT0Kuxk0uPehXdDD6EyQI/oYvQzOh39CmGH33zgYawwgBhiDCVaEkdCfoZ3Ql+h4hDqGFR3ywYZO/U+hZICGGHS0IvocPQwhho9CFaHiMJIYRbQq7G3UgaKEvEH3obPQ1+hvdD+GFQMKXoaoww2hq9C9wFiMIQYbow/kg1YQMUhbbjbAWgwkxhcjCzGHM3zoYc7QqxhrtCc6GaMOvoabQicBW9CyMFOMNVoWi/GRh6DDTGEh0NoYQIwr+hvjC66E2MI9oWZQthhHCCWGhu4Qx3p5gtxhYDCK6ExMPMYdgw6BhQjD8GEaMNsYZ7Q4hhITCPn4RpQIFBLIChhvDDcaHjwO8gSow9+hajDYGEsMLKYakwnqhYTCk6GuMOMYTkwnuheTCvGFxMPoYc0w6xh/jDSmEpMJ0YRUw62BYTCS6E9MJ4YRgwvhhgzCLGGCMISYSvQsZhyTDXqEdML9gV0w9uhtTCFmH1MNLAYUw1ZhP9D96EBMPgYePQqZhGsCumHT0LmYbIwumhAzDHyGNMMWYaMwghh4zDNmGTMPYYbXga5h5pg9mHRMIgYaHQoZhPjCRmF+MNeYRswtSBHzC0mFVMPF2H5GX5hHjCHmH8gKeYQcwk5hojD2mEQsM6YRkwy6wechraHzML+YWnQgFhyzD4mHAsMSYesw9ehEaCtmFcAKhYVpncUh2LC7mGgQPkYcfQpRhODCiWFrMNBYaSw1NB5LDQmEYsJsTrCw+5h/zDYmEEsOGYTQwxhhxTDmGFX0POYcEwz5hqpAZmEWVB5YXSwzxhjzDlGHPMJBYSUwsFh+dC0WHbMIyYVIw2VhfZC+WH5MMZYUcw5lhyLC2mETMPsYZcwnEgYTCDGHasODobqwpZhBTDLGGGsOEYb/QsVh41CdCFzEONIYwQymADmDZwjFrkH/q5Q7khKFD9sGOkPQocWQhEh0lCYqHIvwTov8guTBSlC6EGhUM6IWlQs6hPiCSaHnkPRAd6w7Cg5LgRCHjYJOIRXfSuhJlCOqFmUNdYdNQ91hdmCoKF/UJ5gWyQqJe8LksyFckJWoaJQ7ghnYDJKHIYMawao/FUhwaIq2HdkOTwTTg/NBcbCTqEJsJeoQGQ18hipDtKENZlFIat0dthilCHqGGUMoIcRQvNhY1CymGFsL+IeOQkAh+VDkRAu/2VwtjA61+VhCRCG6HH+AfFFbKBIbCpKHRUOtgQI4ammN48gP4JUPvIa6gx8hQqDicHXEOTYQAwnqhxQ5wHZnsPxoRew/8hk+DAKFPkMCYRlQyahvxDiiFzQL1flOQ/6hHzJLJYVqEI/ougxchpVCdoH5kJhIbQguEhm1DQ2FHsIyQc7AOlmQv5LsHkkMMwf2Q4zBp1D+2HnUMCIZdQuxBzvZv+6V5nQ4eE0CkhPpCZ2HtULnYQWw+MhRRDGSEA3ynQSBgldhrKCcKGV/F9YR1fTfBWgCd8GFIK8oRug1PBqODtqHP4LnQWbzQ9BDsDj0HgMJ7YWpQ2bBN7DG6HkUKQ4fLSes+m25ROGe33E4bkw1qhqVD1KHpUNZwWxQrKh9BCZqF2YNtwWWwpe+FbDKEE0kGWochQ+0hgbC0KG04MbYQ1gshBr2DTvamcIOoZv/I6h9ZCpOEZYJk4VowktBWlDnCFTjFHYff9CJh0bDJ2GHUNzYVRwoCh87DaOHZUOsoQBwrv+QHDLkGZIJpGo6SbbBWgC8yEwEILIXBwhn+tnCnCHNsMYJChw5zSm9wySFkcMw4epw+NhmnDE2H34MHYa2Q4dh7bQiOGJcIK4QNQjDhHWDXOFUkOw4X2w/Nhr1CF2H/sIsADk/Qzh9uDgOGiMEyBHwRZLh0GDyqH7QIy4VVQ50hYbDrYH7zxSBENwwrhvZCjyGScNa4WVw3DhSbDKuHdUL9gfCKWbhnmBSOELcOxfqFw0ah4XCaOEzEKmoYuwhgha2DTSFGcOWIfltfBw1pD4cFQcNS4bBg2DhMNDBSFw0N84ZdCQJB4u4mqGNcLhYSVw3thK3D2uEDsPxIRtw0YBN3CFajfcKK4biw6dhjFDDuFfsLjISdwv9h9HDgCHrYOY4d2/AOenyx1iEBsOpAfWwmzhCHDD2GJENy4VCsN24emBnOHGoKw4RFgnDhgPC8OFRUIJ4QvCdZExPDCtoTsMlIY9Q8nhBOC2uHUcI64ZFwvThxbDAsCr4Lgodt/THhlnDseFBsNpwQJwgjhGODWOE8mEzYZ2w1Qh0j8DuGU8I54UDwi6hU3Dd0FwUONehGQkKh0PCRqEK8KO4ZzwhHhH1Cl8EpwJTIXFwmKhYFJtuEA/3M4XaQ1ahVnD1qHEwIPYU2w+zhMVCdMFVCjm4dWQgihov95eHs8N14Urw/DhKvCiciJLRd4TtwiUhXbCNSEUcJh4TrwuHhLrCueG6EP04baADbBFZDGabYO2rYYuQq3hdbCReGH4I3IeLw+XBHZC0HayIA14VDwzUh4fCveGR8M9oXJw2nh7ZDBrDgO2noPnw37hS3CKeHF8M84d+w7ThmVDRyFncJmoZ3/Y3h9lD+uFDYgKPN9eDdhYdkARSnNx8fpCWX9A3kU7eHVUMQ4eXwm4ACRwxhRYIRQYWs/CIhs7BL2GvEOW4aSPDShXVCU2HBEJn4RSUFIgaRDJv7ZsMZ/nXwtnhuH4icFEMM34aMA7fh5mtiMB78ITvgfwsX+WvCNOFr8K04U3Qwkh6MDOzASLFuAPPw4u+i/DZeEtfz+4WpQp/h5XD2WEPsKuoYpuD/h1LCO2E/8Lv4Z7wk/h3RCN6EgCICwWAIq/hUjwPCHpEN/4Yfwh/hpXDABGrcLJYQgI3wBvG4d+EQCM6flAI5fhqlDV+G94NRYYJwvO+SAjgN5f8MC/iQI99hw1DH+EUCJNYVnwuKBNAjXko38MygNAI1nhGhCOoAsCPeYVQI+qANAii8B0CPV/gwI9oh//DyBGn8K84SDw/ARIgjtoBiCPvvhIIlqhR/C+BG6kAEEeCwoQRswBL+HejCIETT/FQRQ1CoyFYCM0EWqw7QRM24aBHLwlQEfvw0gRx1CABGmCPgEeYIw7cNAiW8JcCKX4YwI4wR/3DsBFU8McEWwI6gRp2h55ynQCUEaXuGwRHgjw8HMCJkEU3wl/hWFCZ+o0COkxMEI5DOt/DbBFucOkEXAI3ARTgi4tAECjn4W4I9AR9/DC+Ha8JSAA4I9IRfgidnDv8PBZEEInIRPAipBH18NgEevw6IRdVDpBjfQGybvoIoX+hgjQ+FMCJMEZEI8Vh8nCdBFlCICQCgIpPBbQiPeG8CN8IUUI4ARTgjGhFjCnGFpUI5IRLXCahHeCMV4WYIkoRvQjXYC9QyLpjMIsIRKVDOhFpCPGEcsIvihqwil4AtCIX4WgIqoRagjRhFdCLsYXsI6fhfQj3KAJCKGEYtwzARXgixhHZ4J04a3wrrhrQAecG9cKMIeXAudB5a4N8HLoO3wQD/WRB66Dn9YZ8NhoU4I0/BYodlOE6P1U4f0w6oRx/DpOFqYLW4cDw8/hs6DRcHvYmhEXJqOphngj3OHPCLnwfrwqyhn1C2MGxcK74fFw0vBceJELKW8JEoZ7g6zh+7CJ+H48Nf4RkBVMAl0caCSk8L/4WcInvBFwjS+H3sKcEdBYfQQFIjpGFBcOZ4cMI+ER6giI+GN8Ph4SOQgAh7wj4UHGgFXwWyg3riN58qREcEJpEbbw/jhvlCrhEkoK3MFjA4PhuQi6yFzCIRER5wpERFXCURF4CJ+EXCSQYcVn5dRF38P1Eb6Q2dh3vCxEGdcKR4VoguUAHGCrkGaUgszsVQ/1hQvDDkE48ID/hqIv3h3yDNkFoQIFgfdQ4UReOCRhGciJ2EbIQnkRVwj3RFaZ2xwdaIoFB+QiNOGIiIBwS8Ilvh0ojnRFsYLzgPKIi0RDdwiaQuUPhwanw1URteDvsGTcJ6ESxwyAcTBdsQBsiKoYTAItMRt7C8SHK8MrEZN0BURcJ0ZEEAoJjYXKwyMROJCgBEZiN/YQbwpdhxxsTeFCcJwoYRqdjhIuCqxwroKBEQxAiBgI+EXuFbUM1EcJwgS0mIjHUG8sI5EX2InAR+BD1uGoiPNEYpwxOka4jYRH1iN7Ec9QnwR2WCCRF0cJyoWw/VJBo4ijX5lMEKblkUYbhuZC9sHY8Oe4RtQgMRrYjylAgGECEXRoebhgMCQuGniKroYsI5ERLYip+EXyB/EeUIv8RDXDIeHKUOa4XaIsLhJfDjuFSiLAoW3wnnhXMBV8FLSDnXLx3L0RtbDSxFwEP9Efbwuzh5aDlkh2rjYQjXw2NhjwjcRFciM+IWXwxkRVBUsJE1rhZpBRIwihVEjluGNiKIYU6I68RMXDO+FXcL0QTAPMDhz4ioSGlAPfEQ2wvHhDvDy0GsuTAwIJI/8RmJCVKF2CPYkUaI9MRARCaeH0SPbaGVWYjhsmDZX6DUJZ4aKImbBSkimxF0kMvEVFwokRTABO/6lsL64ZAgjTqvUM4aa8YNn9Fuw3SBdnUawF7sPg4Z+IhH+x/8jUADQxEIbYBBO+1sk4JEwCIngAZIs/hpCCPJGPCFFOJ2Iu++PkjMoB+SO7YWxI+YRJiA8REJENf/lQA/yw4Uj9cEDCmikZQwrEhQEih8AJSJokYII9BBKUjLaEv1HSkcIgD5Q5HCOhFeCLykdGIkhBTgjQ1DhTHGjD+Qp4QCa4muEwCJjrolI5sRvvDWxEvzkjEM81JqRk38EEFTsJTEaVw9qR+UitBFXCJOXAsKODgSn95xHXsAqkSuAjqRN9CYhFXECwEG7cF9hkUiCaEtSP8kTlIwh62BMxpFLCMDEStIpEgxPCcAEbSOakXgg1qRO0iFip7SJqkUlI5aRl49jpHjlXWkY+fSUACd9BpGASL0kU3A0aRt0jY6FqSIekfdwccqcNNeb6vSOiAfNI8IRI0ibpF1CLkEeAAj8qSR5TpEvSM2kRdI7aRn0iPEHfSKhkXuIvv+sMinpHwyNTvudI96RLnC2pGQyOf4dDIzGROkATpH9SLekXJI+CRlHDrpEcSNkERjIzl+TuRwpgf1ApkaDI4rhm4i2f5oyOJkVxI6Lh3XD7f53iIyAgnPAJ4wNCIOFIUIe4a+I30RokjceFuSL+kd+IisqlztduEASIJkVdI8URxoidxGmiN5EY1JT5o7VRFZFUyIbEUFI2QRPMjTJGzUJefqSI7PhlfDZuHpLzRQcWI6kRmxCyxHqiKIkdlwx3h5ZCc+GXW0ufCxInVhHMjgJEOiNAkV1IqfhzDRIJFxEzR/l2I4LhEnC4pGGiMWkcOQ14RWYjuJEqwLt/lVAL1hZvDXf7gcNcoXrAsXBukDZpFHwMhfjLI+6RAroYWSyCHioZ7fRKhcvCVZEN8LVkTGI3cRZoilAHWzXnnMEgq6BwVD6KHhyLFEWXI5SRf+CUJGncJlESAAJW+v1DLJHNX2ExgltScR2ZCSxF2yIIkQIgisRiv9JWHlQH7kcC5RLBSYj9mE4iMUkZHIrmhQ7C8b6TyN3LgltWbudYi08EoyLPESBIi8R7cjEeFsvxUQV0AZwAEAAUQD8AHY1IYAAgAhgA0L4gAAAAIIToPSAXgABKA2ABEAAogEMAEBfVgA2AA8AAoAAgAAlAUV+1gB4QAEACKAGxqVoAxiAXIA2ABQAHgAZEAbAAMgEAAAUAADiR18UQCnEAPwCIAQK+wQBPhThN31flAo9jUqAAMoBPCnmfmtg43hnIA3hRPP0A4WrQohR06DT7hkKLWweDgswhTT81sHh3iyuowolfBegDEVBUKN/AGcAJ9wVCixgDcKLDkLwo8O8bJReFEDeUQ0BCKX4UnCiFoEgwFoUWxAbhRHCjyFGYgDOAKYgXhRxvCxZK8KMnIcaAGRRc1CRgDF4DeFLwol5+vwA9FGzUPDvNC5eZ+dmDRFG2gJwwGYowI8egCBFEesJRgflmaxR7sBuFHKKMYIa6IjDQZCjlkFnAE6wkYozIBCciFwHyKL8US8/EcqvwpGCFF4NtATwosJR4d5nHzWKJR4a9WcRR1wBrFExQJGAJEo6KBzCjXFHRQIsUYJQpp+0UCFoGpGSSUc8sUIACSinhSzUJZIQuAkQo1ii+FHeAD76E4ospRogBDlC+KKyAdcoTxRsiiFwGTAEaUTjFbjQLSjDoBnADS+I0o3nBW25+lHPLCbuI0o0YA3Ci7lCjKMnIZRoUZRLz8pHijKIWgaRgUZRzyxJADFKKSUcbwzUEjSirIC9KIaURIoj1h4OD9zAdKMnIUBgDpR0SjXhRGKJ5wS8/DiAZCjPhHcKKsUcvguJRpJwmn484JRgVYga5R+0glFGGKN2UTzg43haV1zlGAcN+ZH8o28RESBVlHL4Nyfp2QEFRHfDuFG6KN2UeZIs4AXxAjFGd/xefoxcBFR/MizZAoqNvEZiAEFRdQB9gGzmCMUZKg43hQbF5n6SoMnITsoxJR7wCcVHtKN2Ud3I3nBDJQjFHUqKOUSCo2yh6yjgRTzP1soZOQq0AZCjbKFIqJqUZufeOR4OCySJGKJ+obzgg6AEIoer6lAAIACYAMwAkiAlsJm3z0AekANyABABob70f1AALCfPG+d8jigAfyMsAEQAFjU8IAwACVQFKANgAAAAcgrfGe+LkB0gHwADvkWgAAgAu+p4AAToIAAJKGqKJMvAAckAjyA8AB4AFtUYjAN1R8AA4FGSGC9UQAANSAvlfImwAf9p0gDKmDxvp44IgAtxAJAB+qJcgDPfeAA/EpaADwAGx8MYQbK+TGobADsvwG8uGol+RqgAY1F8ADjUQmopNRf7g0QCpqPBAOy/W7wWaio1G5qNWwfGog7QhajOoDFqMMAGmo9l+e0Q8b6AHRfkdLAKtRTz84FHwAHSASjWG1RPODpABeqLgUdV4N1R7L92+h4321fvAAQ1RaIAAADyNv94AAIKInQTb/FyACt8Z1H6P1JAPo/dl+iii8b7kgDRALEQFyANv8Z1F2qJnvp8KTgA8AA/mBoAEHAEOo7goo6j0gBjKLxvkrfL6hcCjyqRkADvkTb/BW+nfC41EvqPPUWSQBtRTai71Eq3x3UYkNFdRa6ioMCbqLvUY/BVtRd8iXIB1ACSgGAAeAANswRADwAHXgCmoxtRpai71GqqKafp44M1RNaiZAB1qNQ0f+ovgAKgApr4rCgAANLpvzjABIAd4UcCiZ7415jI0RRo1QA1GjaNFbqMzUU0/bgApQBTSHmqILUcmov9R6GiiNHlqKw0V9ASNROajY1G4aMTUTxoktR6ai71EtqME0aUAHDR3Gii1GSaK3UeOopp+j6jn1F74DfUR+o0TR36jZkK8aKk0XwAGKBeN89YByaL4AFxo2tREmi0NH6aKYAJ6wndRe6i5oDwAFXUfo/NTAIGinNFiAHA0QZowDRTT9l8B4AHSAfJo8zRimjLNHsv3iFnjfTpRtmCxNH4aL00UFozDR8z9MQAmaKWQeFoizRhGjrNFhqLY0RQADjRfmi8NGJaL40dZo1jRRKip1GzqPnUYuo5dRfABHNFgaJVvukADiAU19yQAK32wAAAATW+ADb/BBR7wo/VEiADvkSsKUf+FiiQADkgAAAKIToIQ0XvgH9R0sBItEVaJk0TFooTRlajRNEKaPrUUpoirRKmj5n60AFKAJ3wszRmWiAtFJaJAAJIAKa+oCg4tFhaKm0QRo7LR62i3r5jaO20cto8TRq2j9tFGgCmvkoAbNR0ajJtH+aOm0YFo9IA5FQ8b5kAFKADXmE7REWiZtF8AB6UeGow1RFEAa8x9aMPUROgz4U8QtHtEpaJi0aUAKCh72istFWaPW0blo9bRpsiodFnaJh0cvAKrRNWj6tGNaOa0a1o9rR7iimAA9aL60Tpo39Rn2imABqBHDURIAY7RCWikdHsvxzgFNfRzA5OjdtHDaL4ABEgEjRAAAtAAAGnOANbBB6iZ1EK330fo/BdIA0EBLtFk6Iy0ado+7Ra2jnGIhaIR0RTo0XR+2iQYCC6IkAMJom7ReaipdF7aJh0cDAKa+C2iltHK6IZ0UwAFYAcujhdEfaIe0YzouHREaiJtFK6Pp0UTokAA4NRw1FkAE7UQDo7nRvOiLVGGqNI0ey/c2AU18rIB06Lu0Srol3Rc2iQABKAA90Sto6XRMOjVABTXzU0S+ozTRn6j+tFqgEG0fqOC3R00BLtHXaM7Ufmoz3R2uiQACHrFbUV9Af3RIuivdGhqMg0U0/Dc+lwBhL6wgFXAGUISDwnfD7VG/aN0wEhovrRIgA0ADSwHgAGiAXfU8GiNz4oACY1HefPYUzgBigAOaI3Pgrfdl+OSApr6MiDRAPro6HRveiwdG+6MH0aZorXRsei4dHpALt/kDo+sA7wo3gEA6LRANBo0NRAmiYtEJ6Nu0QHo7PRfAA/YCo6Lq0Q1oprRLWi2tEdaJcgHjoyPRZABo9Ep6L6QOroxbRQ+jKdHpAGXwPHo03R1ajzdGG6KYADiAJ/RImizdHJ6It0c3AOXRCujE9GT6Lf0SAAZzREui79GB6IzUdFokAxr2jwDHb6Pf0aPo2LRsBiU9GmPlJ0ePo+LRr+i1tEYwBI0dq/LusEQA6lFdyJt/oeouBR+j8z1HywDQANyQIdRtnZb1F8ADWgHvo9HRh+isdEn6L4AGfognRQ2jf9E+6NC0YjoiAx6QBQgCbaLS0ZxooAxa2iSQak6Mz0QbooQxnmj5n7saIEMRgY/bRViA6DEH6Mx0cfonHRXWjetHn6Mv0Rbo9kAn+jFdEv6J/0cAY+8AfBj0tET6JkMTDozkAWhjADHGGLLUWvorrRJqizbCmkInQXUAQ1RnwoqNFKAG60d2osQAaAAxACUGImAF6o1wxcAw0AA4hmoMUwAFqAZhjN9FZ6JT0deAKa+sdokDEW6KtACHojc+T6iw9HvqIj0awYmPRwBjZoBTXxnvmiAOoAKwojiFXQAcMT3oowxuhj/1Ezn041IkozhRJCjIlFrYKmUSiQThRwSiWVHkKPCUQwozhRzCiKlENGIsUVbTUJRa2DnliVGL0wPworRRQii7FE5PyyUSCogEhZwBpFGdGNaUdhQeRROT86lGuKOTIWMYnoxTHDRAB3KPmgWcAOFkRijnn5nAE+UWSouzBJii7FHmKN6UXcouzBKMDcixJKIcUUcYuuwLijulFZKP2MWzobxRNUB+lFHKMCUdQokJROSj+ZEE1FiUdEo4KYsSiLFFqYBBUdFAupRuoRQlFpKLhURko/OkcKjnjGVaLNvmCYuUR57J/jHz33KUS0oqpRtxAeVEpwLqUatufpRC0DUtqxKJRgXBoDpRwSjWjFg4N6UeRQfpRqijSVElKL8UcMomKAoyjjeHYIMmUUooylROxjfMBwqPJMZUohZR1JjdlF2YOWUWcozkxCZglFEPGN5MVsovQBrJi9lG9KMZMRSY/ZQYxjtjESmNTgVDQkFRFyjvFE1GPuUeDg/uq8z8ecHtGKVMc8ouFR3xjQVFTKOlMWqY/YBvyivlH/KOhUWSo/QhYxieTFmmOXYRCQCFR+wCs8DoqMnIfComFR1CjkVHOmPCUWiot0x4d5MVFGKOxUbzg3FRuyj8VHeKMiUcSos4AIpi9gF+mPFMfM/elRYxjGVHxyOZUZyo+OR7Kj6jFcqLWMTyo2yh/KiDZCCqP2ASKohJRsoD3AAlKOpUcbw2lRtkDZz7t6PgAGfI5wAtQAZz4EAFQAO6o3VRwF9WNQ1AFaAPCAaqAQIBIzBAAAAA="))
///////////////////////////////////////////////

///////////////////////////////////////////////
/* Utility functions */

var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
  pcbdata.metadata.revision + '__#';
var storage;

function initStorage(key) {
  try {
    window.localStorage.getItem("blank");
    storage = window.localStorage;
  } catch (e) {
    // localStorage not available
  }
  if (!storage) {
    try {
      window.sessionStorage.getItem("blank");
      storage = window.sessionStorage;
    } catch (e) {
      // sessionStorage also not available
    }
  }
}

function readStorage(key) {
  if (storage) {
    return storage.getItem(storagePrefix + key);
  } else {
    return null;
  }
}

function writeStorage(key, value) {
  if (storage) {
    storage.setItem(storagePrefix + key, value);
  }
}

function fancyDblClickHandler(el, onsingle, ondouble) {
  return function() {
    if (el.getAttribute("data-dblclick") == null) {
      el.setAttribute("data-dblclick", 1);
      setTimeout(function() {
        if (el.getAttribute("data-dblclick") == 1) {
          onsingle();
        }
        el.removeAttribute("data-dblclick");
      }, 200);
    } else {
      el.removeAttribute("data-dblclick");
      ondouble();
    }
  }
}

function smoothScrollToRow(rowid) {
  document.getElementById(rowid).scrollIntoView({
    behavior: "smooth",
    block: "center",
    inline: "nearest"
  });
}

function focusInputField(input) {
  input.scrollIntoView(false);
  input.focus();
  input.select();
}

function copyToClipboard() {
  var text = '';
  for (var node of bomhead.childNodes[0].childNodes) {
    if (node.firstChild) {
      text = text + node.firstChild.nodeValue;
    }
    if (node != bomhead.childNodes[0].lastChild) {
      text += '\t';
    }
  }
  text += '\n';
  for (var row of bombody.childNodes) {
    for (var cell of row.childNodes) {
      for (var node of cell.childNodes) {
        if (node.nodeName == "INPUT") {
          if (node.checked) {
            text = text + '✓';
          }
        } else if (node.nodeName == "MARK") {
          text = text + node.firstChild.nodeValue;
        } else {
          text = text + node.nodeValue;
        }
      }
      if (cell != row.lastChild) {
        text += '\t';
      }
    }
    text += '\n';
  }
  var textArea = document.createElement("textarea");
  textArea.classList.add('clipboard-temp');
  textArea.value = text;

  document.body.appendChild(textArea);
  textArea.focus();
  textArea.select();

  try {
    if (document.execCommand('copy')) {
      console.log('Bom copied to clipboard.');
    }
  } catch (err) {
    console.log('Can not copy to clipboard.');
  }

  document.body.removeChild(textArea);
}

function removeGutterNode(node) {
  for (var i = 0; i < node.childNodes.length; i++) {
    if (node.childNodes[i].classList &&
      node.childNodes[i].classList.contains("gutter")) {
      node.removeChild(node.childNodes[i]);
      break;
    }
  }
}

function cleanGutters() {
  removeGutterNode(document.getElementById("bot"));
  removeGutterNode(document.getElementById("canvasdiv"));
}

var units = {
  prefixes: {
    giga: ["G", "g", "giga", "Giga", "GIGA"],
    mega: ["M", "mega", "Mega", "MEGA"],
    kilo: ["K", "k", "kilo", "Kilo", "KILO"],
    milli: ["m", "milli", "Milli", "MILLI"],
    micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
    nano: ["N", "n", "nano", "Nano", "NANO"],
    pico: ["P", "p", "pico", "Pico", "PICO"],
  },
  unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
  unitsLong: [
    "OHM", "Ohm", "ohm", "ohms",
    "FARAD", "Farad", "farad",
    "HENRY", "Henry", "henry"
  ],
  getMultiplier: function(s) {
    if (this.prefixes.giga.includes(s)) return 1e9;
    if (this.prefixes.mega.includes(s)) return 1e6;
    if (this.prefixes.kilo.includes(s)) return 1e3;
    if (this.prefixes.milli.includes(s)) return 1e-3;
    if (this.prefixes.micro.includes(s)) return 1e-6;
    if (this.prefixes.nano.includes(s)) return 1e-9;
    if (this.prefixes.pico.includes(s)) return 1e-12;
    return 1;
  },
  valueRegex: null,
}

function initUtils() {
  var allPrefixes = units.prefixes.giga
    .concat(units.prefixes.mega)
    .concat(units.prefixes.kilo)
    .concat(units.prefixes.milli)
    .concat(units.prefixes.micro)
    .concat(units.prefixes.nano)
    .concat(units.prefixes.pico);
  var allUnits = units.unitsShort.concat(units.unitsLong);
  units.valueRegex = new RegExp("^([0-9\.]+)" +
    "\\s*(" + allPrefixes.join("|") + ")?" +
    "(" + allUnits.join("|") + ")?" +
    "(\\b.*)?$", "");
  units.valueAltRegex = new RegExp("^([0-9]*)" +
    "(" + units.unitsShort.join("|") + ")?" +
    "([GgMmKkUuNnPp])?" +
    "([0-9]*)" +
    "(\\b.*)?$", "");
  if (config.fields.includes("Value")) {
    var index = config.fields.indexOf("Value");
    pcbdata.bom["parsedValues"] = {};
    for (var id in pcbdata.bom.fields) {
      pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
    }
  }
}

function parseValue(val, ref) {
  var inferUnit = (unit, ref) => {
    if (unit) {
      unit = unit.toLowerCase();
      if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
        unit = 'r';
      }
      unit = unit[0];
    } else {
      ref = /^([a-z]+)\d+$/i.exec(ref);
      if (ref) {
        ref = ref[1].toLowerCase();
        if (ref == "c") unit = 'f';
        else if (ref == "l") unit = 'h';
        else if (ref == "r" || ref == "rv") unit = 'r';
        else unit = null;
      }
    }
    return unit;
  };
  val = val.replace(/,/g, "");
  var match = units.valueRegex.exec(val);
  var unit;
  if (match) {
    val = parseFloat(match[1]);
    if (match[2]) {
      val = val * units.getMultiplier(match[2]);
    }
    unit = inferUnit(match[3], ref);
    if (!unit) return null;
    else return {
      val: val,
      unit: unit,
      extra: match[4],
    }
  }
  match = units.valueAltRegex.exec(val);
  if (match && (match[1] || match[4])) {
    val = parseFloat(match[1] + "." + match[4]);
    if (match[3]) {
      val = val * units.getMultiplier(match[3]);
    }
    unit = inferUnit(match[2], ref);
    if (!unit) return null;
    else return {
      val: val,
      unit: unit,
      extra: match[5],
    }
  }
  return null;
}

function valueCompare(a, b, stra, strb) {
  if (a === null && b === null) {
    // Failed to parse both values, compare them as strings.
    if (stra != strb) return stra > strb ? 1 : -1;
    else return 0;
  } else if (a === null) {
    return 1;
  } else if (b === null) {
    return -1;
  } else {
    if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
    else if (a.val != b.val) return a.val > b.val ? 1 : -1;
    else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
    else return 0;
  }
}

function validateSaveImgDimension(element) {
  var valid = false;
  var intValue = 0;
  if (/^[1-9]\d*$/.test(element.value)) {
    intValue = parseInt(element.value);
    if (intValue <= 16000) {
      valid = true;
    }
  }
  if (valid) {
    element.classList.remove("invalid");
  } else {
    element.classList.add("invalid");
  }
  return intValue;
}

function saveImage(layer) {
  var width = validateSaveImgDimension(document.getElementById("render-save-width"));
  var height = validateSaveImgDimension(document.getElementById("render-save-height"));
  var bgcolor = null;
  if (!document.getElementById("render-save-transparent").checked) {
    var style = getComputedStyle(topmostdiv);
    bgcolor = style.getPropertyValue("background-color");
  }
  if (!width || !height) return;

  // Prepare image
  var canvas = document.createElement("canvas");
  var layerdict = {
    transform: {
      x: 0,
      y: 0,
      s: 1,
      panx: 0,
      pany: 0,
      zoom: 1,
    },
    bg: canvas,
    fab: canvas,
    silk: canvas,
    highlight: canvas,
    layer: layer,
  }
  // Do the rendering
  recalcLayerScale(layerdict, width, height);
  prepareLayer(layerdict);
  clearCanvas(canvas, bgcolor);
  drawBackground(layerdict, false);
  drawHighlightsOnLayer(layerdict, false);

  // Save image
  var imgdata = canvas.toDataURL("image/png");

  var filename = pcbdata.metadata.title;
  if (pcbdata.metadata.revision) {
    filename += `.${pcbdata.metadata.revision}`;
  }
  filename += `.${layer}.png`;
  saveFile(filename, dataURLtoBlob(imgdata));
}

function saveSettings() {
  var data = {
    type: "InteractiveHtmlBom settings",
    version: 1,
    pcbmetadata: pcbdata.metadata,
    settings: settings,
  }
  var blob = new Blob([JSON.stringify(data, null, 4)], {
    type: "application/json"
  });
  saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
}

function loadSettings() {
  var input = document.createElement("input");
  input.type = "file";
  input.accept = ".settings.json";
  input.onchange = function(e) {
    var file = e.target.files[0];
    var reader = new FileReader();
    reader.onload = readerEvent => {
      var content = readerEvent.target.result;
      var newSettings;
      try {
        newSettings = JSON.parse(content);
      } catch (e) {
        alert("Selected file is not InteractiveHtmlBom settings file.");
        return;
      }
      if (newSettings.type != "InteractiveHtmlBom settings") {
        alert("Selected file is not InteractiveHtmlBom settings file.");
        return;
      }
      var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
      if (metadataMatches) {
        for (var k in pcbdata.metadata) {
          if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
            metadataMatches = false;
          }
        }
      }
      if (!metadataMatches) {
        var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
        var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
        if (!confirm(
            `Settins file metadata does not match current metadata.\n\n` +
            `Page metadata:\n${currentMetadata}\n\n` +
            `Settings file metadata:\n${fileMetadata}\n\n` +
            `Press OK if you would like to import settings anyway.`)) {
          return;
        }
      }
      overwriteSettings(newSettings.settings);
    }
    reader.readAsText(file, 'UTF-8');
  }
  input.click();
}

function overwriteSettings(newSettings) {
  initDone = false;
  Object.assign(settings, newSettings);
  writeStorage("bomlayout", settings.bomlayout);
  writeStorage("bommode", settings.bommode);
  writeStorage("canvaslayout", settings.canvaslayout);
  writeStorage("bomCheckboxes", settings.checkboxes.join(","));
  document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
  for (var checkbox of settings.checkboxes) {
    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
  }
  writeStorage("markWhenChecked", settings.markWhenChecked);
  padsVisible(settings.renderPads);
  document.getElementById("padsCheckbox").checked = settings.renderPads;
  fabricationVisible(settings.renderFabrication);
  document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
  silkscreenVisible(settings.renderSilkscreen);
  document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
  referencesVisible(settings.renderReferences);
  document.getElementById("referencesCheckbox").checked = settings.renderReferences;
  valuesVisible(settings.renderValues);
  document.getElementById("valuesCheckbox").checked = settings.renderValues;
  tracksVisible(settings.renderTracks);
  document.getElementById("tracksCheckbox").checked = settings.renderTracks;
  zonesVisible(settings.renderZones);
  document.getElementById("zonesCheckbox").checked = settings.renderZones;
  dnpOutline(settings.renderDnpOutline);
  document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
  setRedrawOnDrag(settings.redrawOnDrag);
  document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
  setDarkMode(settings.darkMode);
  document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
  setHighlightPin1(settings.highlightpin1);
  document.getElementById("highlightpin1Checkbox").checked = settings.highlightpin1;
  showFootprints(settings.show_footprints);
  writeStorage("boardRotation", settings.boardRotation);
  document.getElementById("boardRotation").value = settings.boardRotation / 5;
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
  initDone = true;
  prepCheckboxes();
  changeBomLayout(settings.bomlayout);
}

function saveFile(filename, blob) {
  var link = document.createElement("a");
  var objurl = URL.createObjectURL(blob);
  link.download = filename;
  link.href = objurl;
  link.click();
}

function dataURLtoBlob(dataurl) {
  var arr = dataurl.split(','),
    mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], {
    type: mime
  });
}

var settings = {
  canvaslayout: "default",
  bomlayout: "default",
  bommode: "grouped",
  checkboxes: [],
  checkboxStoredRefs: {},
  darkMode: false,
  highlightpin1: false,
  redrawOnDrag: true,
  boardRotation: 0,
  renderPads: true,
  renderReferences: true,
  renderValues: true,
  renderSilkscreen: true,
  renderFabrication: true,
  renderDnpOutline: false,
  renderTracks: true,
  renderZones: true,
  columnOrder: [],
  hiddenColumns: [],
}

function initDefaults() {
  settings.bomlayout = readStorage("bomlayout");
  if (settings.bomlayout === null) {
    settings.bomlayout = config.bom_view;
  }
  if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
    settings.bomlayout = config.bom_view;
  }
  settings.bommode = readStorage("bommode");
  if (settings.bommode === null) {
    settings.bommode = "grouped";
  }
  if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
    settings.bommode = "grouped";
  }
  settings.canvaslayout = readStorage("canvaslayout");
  if (settings.canvaslayout === null) {
    settings.canvaslayout = config.layer_view;
  }
  var bomCheckboxes = readStorage("bomCheckboxes");
  if (bomCheckboxes === null) {
    bomCheckboxes = config.checkboxes;
  }
  settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
  document.getElementById("bomCheckboxes").value = bomCheckboxes;

  settings.markWhenChecked = readStorage("markWhenChecked") || "";
  populateMarkWhenCheckedOptions();

  function initBooleanSetting(storageString, def, elementId, func) {
    var b = readStorage(storageString);
    if (b === null) {
      b = def;
    } else {
      b = (b == "true");
    }
    document.getElementById(elementId).checked = b;
    func(b);
  }

  initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
  initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
  initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
  initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
  initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
  if ("tracks" in pcbdata) {
    initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
    initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
  } else {
    document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
    tracksVisible(false);
    zonesVisible(false);
  }
  initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
  initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
  initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
  initBooleanSetting("highlightpin1", config.highlight_pin1, "highlightpin1Checkbox", setHighlightPin1);

  var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
  var hcols = JSON.parse(readStorage("hiddenColumns"));
  if (hcols === null) {
    hcols = [];
  }
  settings.hiddenColumns = hcols.filter(e => fields.includes(e));

  var cord = JSON.parse(readStorage("columnOrder"));
  if (cord === null) {
    cord = fields;
  } else {
    cord = cord.filter(e => fields.includes(e));
    if (cord.length != fields.length)
      cord = fields;
  }
  settings.columnOrder = cord;

  settings.boardRotation = readStorage("boardRotation");
  if (settings.boardRotation === null) {
    settings.boardRotation = config.board_rotation * 5;
  } else {
    settings.boardRotation = parseInt(settings.boardRotation);
  }
  document.getElementById("boardRotation").value = settings.boardRotation / 5;
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
}

// Helper classes for user js callbacks.

const IBOM_EVENT_TYPES = {
  ALL: "all",
  HIGHLIGHT_EVENT: "highlightEvent",
  CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
  BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
}

const EventHandler = {
  callbacks: {},
  init: function() {
    for (eventType of Object.values(IBOM_EVENT_TYPES))
      this.callbacks[eventType] = [];
  },
  registerCallback: function(eventType, callback) {
    this.callbacks[eventType].push(callback);
  },
  emitEvent: function(eventType, eventArgs) {
    event = {
      eventType: eventType,
      args: eventArgs,
    }
    var callback;
    for (callback of this.callbacks[eventType])
      callback(event);
    for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
      callback(event);
  }
}
EventHandler.init();

///////////////////////////////////////////////

///////////////////////////////////////////////
/* PCB rendering code */

var emptyContext2d = document.createElement("canvas").getContext("2d");

function deg2rad(deg) {
  return deg * Math.PI / 180;
}

function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
  var point = [
    linepoint[0] * text.width + offsetx,
    linepoint[1] * text.height + offsety
  ];
  // This approximates pcbnew behavior with how text tilts depending on horizontal justification
  point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
  return point;
}

function drawText(ctx, text, color) {
  if ("ref" in text && !settings.renderReferences) return;
  if ("val" in text && !settings.renderValues) return;
  ctx.save();
  ctx.fillStyle = color;
  ctx.strokeStyle = color;
  ctx.lineCap = "round";
  ctx.lineJoin = "round";
  ctx.lineWidth = text.thickness;
  if ("svgpath" in text) {
    ctx.stroke(new Path2D(text.svgpath));
    ctx.restore();
    return;
  }
  ctx.translate(...text.pos);
  ctx.translate(text.thickness * 0.5, 0);
  var angle = -text.angle;
  if (text.attr.includes("mirrored")) {
    ctx.scale(-1, 1);
    angle = -angle;
  }
  var tilt = 0;
  if (text.attr.includes("italic")) {
    tilt = 0.125;
  }
  var interline = text.height * 1.5 + text.thickness;
  var txt = text.text.split("\n");
  // KiCad ignores last empty line.
  if (txt[txt.length - 1] == '') txt.pop();
  ctx.rotate(deg2rad(angle));
  var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
  offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
  for (var i in txt) {
    var lineWidth = text.thickness + interline / 2 * tilt;
    for (var j = 0; j < txt[i].length; j++) {
      if (txt[i][j] == '\t') {
        var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
        lineWidth += fourSpaces - lineWidth % fourSpaces;
      } else {
        if (txt[i][j] == '~') {
          j++;
          if (j == txt[i].length)
            break;
        }
        lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
      }
    }
    var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
    var inOverbar = false;
    for (var j = 0; j < txt[i].length; j++) {
      if (txt[i][j] == '\t') {
        var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
        offsetx += fourSpaces - offsetx % fourSpaces;
        continue;
      } else if (txt[i][j] == '~') {
        j++;
        if (j == txt[i].length)
          break;
        if (txt[i][j] != '~') {
          inOverbar = !inOverbar;
        }
      }
      var glyph = pcbdata.font_data[txt[i][j]];
      if (inOverbar) {
        var overbarStart = [offsetx, -text.height * 1.4 + offsety];
        var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];

        if (!lastHadOverbar) {
          overbarStart[0] += text.height * 1.4 * tilt;
          lastHadOverbar = true;
        }
        ctx.beginPath();
        ctx.moveTo(...overbarStart);
        ctx.lineTo(...overbarEnd);
        ctx.stroke();
      } else {
        lastHadOverbar = false;
      }
      for (var line of glyph.l) {
        ctx.beginPath();
        ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
        for (var k = 1; k < line.length; k++) {
          ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
        }
        ctx.stroke();
      }
      offsetx += glyph.w * text.width;
    }
    offsety += interline;
  }
  ctx.restore();
}

function drawedge(ctx, scalefactor, edge, color) {
  ctx.strokeStyle = color;
  ctx.fillStyle = color;
  ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
  ctx.lineCap = "round";
  ctx.lineJoin = "round";
  if ("svgpath" in edge) {
    ctx.stroke(new Path2D(edge.svgpath));
  } else {
    ctx.beginPath();
    if (edge.type == "segment") {
      ctx.moveTo(...edge.start);
      ctx.lineTo(...edge.end);
    }
    if (edge.type == "rect") {
      ctx.moveTo(...edge.start);
      ctx.lineTo(edge.start[0], edge.end[1]);
      ctx.lineTo(...edge.end);
      ctx.lineTo(edge.end[0], edge.start[1]);
      ctx.lineTo(...edge.start);
    }
    if (edge.type == "arc") {
      ctx.arc(
        ...edge.start,
        edge.radius,
        deg2rad(edge.startangle),
        deg2rad(edge.endangle));
    }
    if (edge.type == "circle") {
      ctx.arc(
        ...edge.start,
        edge.radius,
        0, 2 * Math.PI);
      ctx.closePath();
    }
    if (edge.type == "curve") {
      ctx.moveTo(...edge.start);
      ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
    }
    if("filled" in edge && edge.filled)
      ctx.fill();
    else
      ctx.stroke();
  }
}

function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
  // chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
  var path = new Path2D();
  var width = size[0];
  var height = size[1];
  var x = width * -0.5;
  var y = height * -0.5;
  var chamfOffset = Math.min(width, height) * chamfratio;
  path.moveTo(x, 0);
  if (chamfpos & 4) {
    path.lineTo(x, y + height - chamfOffset);
    path.lineTo(x + chamfOffset, y + height);
    path.lineTo(0, y + height);
  } else {
    path.arcTo(x, y + height, x + width, y + height, radius);
  }
  if (chamfpos & 8) {
    path.lineTo(x + width - chamfOffset, y + height);
    path.lineTo(x + width, y + height - chamfOffset);
    path.lineTo(x + width, 0);
  } else {
    path.arcTo(x + width, y + height, x + width, y, radius);
  }
  if (chamfpos & 2) {
    path.lineTo(x + width, y + chamfOffset);
    path.lineTo(x + width - chamfOffset, y);
    path.lineTo(0, y);
  } else {
    path.arcTo(x + width, y, x, y, radius);
  }
  if (chamfpos & 1) {
    path.lineTo(x + chamfOffset, y);
    path.lineTo(x, y + chamfOffset);
    path.lineTo(x, 0);
  } else {
    path.arcTo(x, y, x, y + height, radius);
  }
  path.closePath();
  return path;
}

function getOblongPath(size) {
  return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
}

function getPolygonsPath(shape) {
  if (shape.path2d) {
    return shape.path2d;
  }
  if ("svgpath" in shape) {
    shape.path2d = new Path2D(shape.svgpath);
  } else {
    var path = new Path2D();
    for (var polygon of shape.polygons) {
      path.moveTo(...polygon[0]);
      for (var i = 1; i < polygon.length; i++) {
        path.lineTo(...polygon[i]);
      }
      path.closePath();
    }
    shape.path2d = path;
  }
  return shape.path2d;
}

function drawPolygonShape(ctx, scalefactor, shape, color) {
  ctx.save();
  if (!("svgpath" in shape)) {
    ctx.translate(...shape.pos);
    ctx.rotate(deg2rad(-shape.angle));
  }
  if("filled" in shape && !shape.filled) {
    ctx.strokeStyle = color;
    ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
    ctx.lineCap = "round";
    ctx.lineJoin = "round";
    ctx.stroke(getPolygonsPath(shape));
  } else {
    ctx.fillStyle = color;
    ctx.fill(getPolygonsPath(shape));
  }
  ctx.restore();
}

function drawDrawing(ctx, scalefactor, drawing, color) {
  if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
    drawedge(ctx, scalefactor, drawing, color);
  } else if (drawing.type == "polygon") {
    drawPolygonShape(ctx, scalefactor, drawing, color);
  } else {
    drawText(ctx, drawing, color);
  }
}

function getCirclePath(radius) {
  var path = new Path2D();
  path.arc(0, 0, radius, 0, 2 * Math.PI);
  path.closePath();
  return path;
}

function getCachedPadPath(pad) {
  if (!pad.path2d) {
    // if path2d is not set, build one and cache it on pad object
    if (pad.shape == "rect") {
      pad.path2d = new Path2D();
      pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
    } else if (pad.shape == "oval") {
      pad.path2d = getOblongPath(pad.size);
    } else if (pad.shape == "circle") {
      pad.path2d = getCirclePath(pad.size[0] / 2);
    } else if (pad.shape == "roundrect") {
      pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
    } else if (pad.shape == "chamfrect") {
      pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
    } else if (pad.shape == "custom") {
      pad.path2d = getPolygonsPath(pad);
    }
  }
  return pad.path2d;
}

function drawPad(ctx, pad, color, outline) {
  ctx.save();
  ctx.translate(...pad.pos);
  ctx.rotate(deg2rad(pad.angle));
  if (pad.offset) {
    ctx.translate(...pad.offset);
  }
  ctx.fillStyle = color;
  ctx.strokeStyle = color;
  var path = getCachedPadPath(pad);
  if (outline) {
    ctx.stroke(path);
  } else {
    ctx.fill(path);
  }
  ctx.restore();
}

function drawPadHole(ctx, pad, padHoleColor) {
  if (pad.type != "th") return;
  ctx.save();
  ctx.translate(...pad.pos);
  ctx.rotate(deg2rad(pad.angle));
  ctx.fillStyle = padHoleColor;
  if (pad.drillshape == "oblong") {
    ctx.fill(getOblongPath(pad.drillsize));
  } else {
    ctx.fill(getCirclePath(pad.drillsize[0] / 2));
  }
  ctx.restore();
}

function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
  if (highlight) {
    // draw bounding box
    if (footprint.layer == layer) {
      ctx.save();
      ctx.globalAlpha = 0.2;
      ctx.translate(...footprint.bbox.pos);
      ctx.rotate(deg2rad(-footprint.bbox.angle));
      ctx.translate(...footprint.bbox.relpos);
      ctx.fillStyle = colors.pad;
      ctx.fillRect(0, 0, ...footprint.bbox.size);
      ctx.globalAlpha = 1;
      ctx.strokeStyle = colors.pad;
      ctx.strokeRect(0, 0, ...footprint.bbox.size);
      ctx.restore();
    }
  }
  // draw drawings
  for (var drawing of footprint.drawings) {
    if (drawing.layer == layer) {
      drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
    }
  }
  // draw pads
  if (settings.renderPads) {
    for (var pad of footprint.pads) {
      if (pad.layers.includes(layer)) {
        drawPad(ctx, pad, colors.pad, outline);
        if (pad.pin1 && settings.highlightpin1) {
          drawPad(ctx, pad, colors.outline, true);
        }
      }
    }
    for (var pad of footprint.pads) {
      drawPadHole(ctx, pad, colors.padHole);
    }
  }
}

function drawEdgeCuts(canvas, scalefactor) {
  var ctx = canvas.getContext("2d");
  var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
  for (var edge of pcbdata.edges) {
    drawDrawing(ctx, scalefactor, edge, edgecolor);
  }
}

function drawFootprints(canvas, layer, scalefactor, highlight) {
  var ctx = canvas.getContext("2d");
  ctx.lineWidth = 3 / scalefactor;
  var style = getComputedStyle(topmostdiv);

  var colors = {
    pad: style.getPropertyValue('--pad-color'),
    padHole: style.getPropertyValue('--pad-hole-color'),
    outline: style.getPropertyValue('--pin1-outline-color'),
  }

  for (var i = 0; i < pcbdata.footprints.length; i++) {
    var mod = pcbdata.footprints[i];
    var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
    var h = highlightedFootprints.includes(i);
    var d = markedFootprints.has(i);
    if (highlight) {
      if(h && d) {
        colors.pad = style.getPropertyValue('--pad-color-highlight-both');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
      } else if (h) {
        colors.pad = style.getPropertyValue('--pad-color-highlight');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
      } else if (d) {
        colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
        colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
      }
    }
    if( h || d || !highlight) {
      drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
    }
  }
}

function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
  var ctx = canvas.getContext("2d");
  for (var d of pcbdata.drawings[layername][layer]) {
    if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
      drawedge(ctx, scalefactor, d, edgeColor);
    } else if (d.type == "polygon") {
      drawPolygonShape(ctx, scalefactor, d, polygonColor);
    } else {
      drawText(ctx, d, textColor);
    }
  }
}

function drawTracks(canvas, layer, color, highlight) {
  ctx = canvas.getContext("2d");
  ctx.strokeStyle = color;
  ctx.lineCap = "round";
  for (var track of pcbdata.tracks[layer]) {
    if (highlight && highlightedNet != track.net) continue;
    ctx.lineWidth = track.width;
    ctx.beginPath();
    if ('radius' in track) {
      ctx.arc(
        ...track.center,
        track.radius,
        deg2rad(track.startangle),
        deg2rad(track.endangle));
    } else {
      ctx.moveTo(...track.start);
      ctx.lineTo(...track.end);
    }
    ctx.stroke();
  }
}

function drawZones(canvas, layer, color, highlight) {
  ctx = canvas.getContext("2d");
  ctx.strokeStyle = color;
  ctx.fillStyle = color;
  ctx.lineJoin = "round";
  for (var zone of pcbdata.zones[layer]) {
    if (!zone.path2d) {
      zone.path2d = getPolygonsPath(zone);
    }
    if (highlight && highlightedNet != zone.net) continue;
    ctx.fill(zone.path2d);
    if (zone.width > 0) {
      ctx.lineWidth = zone.width;
      ctx.stroke(zone.path2d);
    }
  }
}

function clearCanvas(canvas, color = null) {
  var ctx = canvas.getContext("2d");
  ctx.save();
  ctx.setTransform(1, 0, 0, 1, 0, 0);
  if (color) {
    ctx.fillStyle = color;
    ctx.fillRect(0, 0, canvas.width, canvas.height);
  } else {
    if (!window.matchMedia("print").matches)
      ctx.clearRect(0, 0, canvas.width, canvas.height);
  }
  ctx.restore();
}

function drawNets(canvas, layer, highlight) {
  var style = getComputedStyle(topmostdiv);
  if (settings.renderTracks) {
    var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
    drawTracks(canvas, layer, trackColor, highlight);
  }
  if (settings.renderZones) {
    var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
    drawZones(canvas, layer, zoneColor, highlight);
  }
  if (highlight && settings.renderPads) {
    var padColor = style.getPropertyValue('--pad-color-highlight');
    var padHoleColor = style.getPropertyValue('--pad-hole-color');
    var ctx = canvas.getContext("2d");
    for (var footprint of pcbdata.footprints) {
      // draw pads
      var padDrawn = false;
      for (var pad of footprint.pads) {
        if (highlightedNet != pad.net) continue;
        if (pad.layers.includes(layer)) {
          drawPad(ctx, pad, padColor, false);
          padDrawn = true;
        }
      }
      if (padDrawn) {
        // redraw all pad holes because some pads may overlap
        for (var pad of footprint.pads) {
          drawPadHole(ctx, pad, padHoleColor);
        }
      }
    }
  }
}

function drawHighlightsOnLayer(canvasdict, clear = true) {
  if (clear) {
    clearCanvas(canvasdict.highlight);
  }
  if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
    drawFootprints(canvasdict.highlight, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom, true);
  }
  if (highlightedNet !== null) {
    drawNets(canvasdict.highlight, canvasdict.layer, true);
  }
}

function drawHighlights() {
  drawHighlightsOnLayer(allcanvas.front);
  drawHighlightsOnLayer(allcanvas.back);
}

function drawBackground(canvasdict, clear = true) {
  if (clear) {
    clearCanvas(canvasdict.bg);
    clearCanvas(canvasdict.fab);
    clearCanvas(canvasdict.silk);
  }

  drawNets(canvasdict.bg, canvasdict.layer, false);
  drawFootprints(canvasdict.bg, canvasdict.layer,
    canvasdict.transform.s * canvasdict.transform.zoom, false);

  drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);

  var style = getComputedStyle(topmostdiv);
  var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
  var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
  var textColor = style.getPropertyValue('--silkscreen-text-color');
  if (settings.renderSilkscreen) {
    drawBgLayer(
      "silkscreen", canvasdict.silk, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom,
      edgeColor, polygonColor, textColor);
  }
  edgeColor = style.getPropertyValue('--fabrication-edge-color');
  polygonColor = style.getPropertyValue('--fabrication-polygon-color');
  textColor = style.getPropertyValue('--fabrication-text-color');
  if (settings.renderFabrication) {
    drawBgLayer(
      "fabrication", canvasdict.fab, canvasdict.layer,
      canvasdict.transform.s * canvasdict.transform.zoom,
      edgeColor, polygonColor, textColor);
  }
}

function prepareCanvas(canvas, flip, transform) {
  var ctx = canvas.getContext("2d");
  ctx.setTransform(1, 0, 0, 1, 0, 0);
  var fontsize = 1.55;
  ctx.scale(transform.zoom, transform.zoom);
  ctx.translate(transform.panx, transform.pany);
  if (flip) {
    ctx.scale(-1, 1);
  }
  ctx.translate(transform.x, transform.y);
  ctx.rotate(deg2rad(settings.boardRotation));
  ctx.scale(transform.s, transform.s);
}

function prepareLayer(canvasdict) {
  var flip = (canvasdict.layer == "B");
  for (var c of ["bg", "fab", "silk", "highlight"]) {
    prepareCanvas(canvasdict[c], flip, canvasdict.transform);
  }
}

function rotateVector(v, angle) {
  angle = deg2rad(angle);
  return [
    v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
    v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
  ];
}

function applyRotation(bbox) {
  var corners = [
    [bbox.minx, bbox.miny],
    [bbox.minx, bbox.maxy],
    [bbox.maxx, bbox.miny],
    [bbox.maxx, bbox.maxy],
  ];
  corners = corners.map((v) => rotateVector(v, settings.boardRotation));
  return {
    minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
    miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
    maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
    maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
  }
}

function recalcLayerScale(layerdict, width, height) {
  var bbox = applyRotation(pcbdata.edges_bbox);
  var scalefactor = 0.98 * Math.min(
    width / (bbox.maxx - bbox.minx),
    height / (bbox.maxy - bbox.miny)
  );
  if (scalefactor < 0.1) {
    scalefactor = 1;
  }
  layerdict.transform.s = scalefactor;
  var flip = (layerdict.layer == "B");
  if (flip) {
    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
  } else {
    layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
  }
  layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
  for (var c of ["bg", "fab", "silk", "highlight"]) {
    canvas = layerdict[c];
    canvas.width = width;
    canvas.height = height;
    canvas.style.width = (width / devicePixelRatio) + "px";
    canvas.style.height = (height / devicePixelRatio) + "px";
  }
}

function redrawCanvas(layerdict) {
  prepareLayer(layerdict);
  drawBackground(layerdict);
  drawHighlightsOnLayer(layerdict);
}

function resizeCanvas(layerdict) {
  var canvasdivid = {
    "F": "frontcanvas",
    "B": "backcanvas"
  } [layerdict.layer];
  var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
  var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
  recalcLayerScale(layerdict, width, height);
  redrawCanvas(layerdict);
}

function resizeAll() {
  resizeCanvas(allcanvas.front);
  resizeCanvas(allcanvas.back);
}

function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
  var A = x - x1;
  var B = y - y1;
  var C = x2 - x1;
  var D = y2 - y1;

  var dot = A * C + B * D;
  var len_sq = C * C + D * D;
  var dx, dy;
  if (len_sq == 0) {
    // start and end of the segment coincide
    dx = x - x1;
    dy = y - y1;
  } else {
    var param = dot / len_sq;
    var xx, yy;
    if (param < 0) {
      xx = x1;
      yy = y1;
    } else if (param > 1) {
      xx = x2;
      yy = y2;
    } else {
      xx = x1 + param * C;
      yy = y1 + param * D;
    }
    dx = x - xx;
    dy = y - yy;
  }
  return dx * dx + dy * dy <= d * d;
}

function modulo(n, mod) {
  return ((n % mod) + mod) % mod;
}

function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
  var dx = x - xc;
  var dy = y - yc;
  var r_sq = dx * dx + dy * dy;
  var rmin = Math.max(0, radius - d);
  var rmax = radius + d;

  if (r_sq < rmin * rmin || r_sq > rmax * rmax)
    return false;

  var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
  var dx1 = xc + radius * Math.cos(angle1) - x;
  var dy1 = yc + radius * Math.sin(angle1) - y;
  if (dx1 * dx1 + dy1 * dy1 <= d * d)
    return true;

  var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
  var dx2 = xc + radius * Math.cos(angle2) - x;
  var dy2 = yc + radius * Math.sin(angle2) - y;
  if (dx2 * dx2 + dy2 * dy2 <= d * d)
    return true;

  var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
  if (angle1 > angle2)
    return (angle >= angle2 || angle <= angle1);
  else
    return (angle >= angle1 && angle <= angle2);
}

function pointWithinPad(x, y, pad) {
  var v = [x - pad.pos[0], y - pad.pos[1]];
  v = rotateVector(v, -pad.angle);
  if (pad.offset) {
    v[0] -= pad.offset[0];
    v[1] -= pad.offset[1];
  }
  return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
}

function netHitScan(layer, x, y) {
  // Check track segments
  if (settings.renderTracks && pcbdata.tracks) {
    for (var track of pcbdata.tracks[layer]) {
      if ('radius' in track) {
        if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
          return track.net;
        }
      } else {
        if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
          return track.net;
        }
      }
    }
  }
  // Check pads
  if (settings.renderPads) {
    for (var footprint of pcbdata.footprints) {
      for (var pad of footprint.pads) {
        if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
          return pad.net;
        }
      }
    }
  }
  return null;
}

function pointWithinFootprintBbox(x, y, bbox) {
  var v = [x - bbox.pos[0], y - bbox.pos[1]];
  v = rotateVector(v, bbox.angle);
  return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
    bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
}

function bboxHitScan(layer, x, y) {
  var result = [];
  for (var i = 0; i < pcbdata.footprints.length; i++) {
    var footprint = pcbdata.footprints[i];
    if (footprint.layer == layer) {
      if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
        result.push(i);
      }
    }
  }
  return result;
}

function handlePointerDown(e, layerdict) {
  if (e.button != 0 && e.button != 1) {
    return;
  }
  e.preventDefault();
  e.stopPropagation();

  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  layerdict.pointerStates[e.pointerId] = {
    distanceTravelled: 0,
    lastX: e.offsetX,
    lastY: e.offsetY,
    downTime: Date.now(),
  };
}

function handleMouseClick(e, layerdict) {
  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  var x = e.offsetX;
  var y = e.offsetY;
  var t = layerdict.transform;
  if (layerdict.layer == "B") {
    x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
  } else {
    x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
  }
  y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
  var v = rotateVector([x, y], -settings.boardRotation);
  if ("nets" in pcbdata) {
    var net = netHitScan(layerdict.layer, ...v);
    if (net !== highlightedNet) {
      netClicked(net);
    }
  }
  if (highlightedNet === null) {
    var footprints = bboxHitScan(layerdict.layer, ...v);
    if (footprints.length > 0) {
      footprintsClicked(footprints);
    }
  }
}

function handlePointerLeave(e, layerdict) {
  e.preventDefault();
  e.stopPropagation();

  if (!settings.redrawOnDrag) {
    redrawCanvas(layerdict);
  }

  delete layerdict.pointerStates[e.pointerId];
}

function resetTransform(layerdict) {
  layerdict.transform.panx = 0;
  layerdict.transform.pany = 0;
  layerdict.transform.zoom = 1;
  redrawCanvas(layerdict);
}

function handlePointerUp(e, layerdict) {
  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  e.preventDefault();
  e.stopPropagation();

  if (e.button == 2) {
    // Reset pan and zoom on right click.
    resetTransform(layerdict);
    layerdict.anotherPointerTapped = false;
    return;
  }

  // We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
  var ptr = layerdict.pointerStates[e.pointerId];
  ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);

  if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
    if (Object.keys(layerdict.pointerStates).length == 1) {
      if (layerdict.anotherPointerTapped) {
        // This is the second pointer coming off of a two-finger tap
        resetTransform(layerdict);
      } else {
        // This is just a regular tap
        handleMouseClick(e, layerdict);
      }
      layerdict.anotherPointerTapped = false;
    } else {
      // This is the first finger coming off of what could become a two-finger tap
      layerdict.anotherPointerTapped = true;
    }
  } else {
    if (!settings.redrawOnDrag) {
      redrawCanvas(layerdict);
    }
    layerdict.anotherPointerTapped = false;
  }

  delete layerdict.pointerStates[e.pointerId];
}

function handlePointerMove(e, layerdict) {
  if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
    return;
  }
  e.preventDefault();
  e.stopPropagation();

  if (!e.hasOwnProperty("offsetX")) {
    // The polyfill doesn't set this properly
    e.offsetX = e.pageX - e.currentTarget.offsetLeft;
    e.offsetY = e.pageY - e.currentTarget.offsetTop;
  }

  var thisPtr = layerdict.pointerStates[e.pointerId];

  var dx = e.offsetX - thisPtr.lastX;
  var dy = e.offsetY - thisPtr.lastY;

  // If this number is low on pointer up, we count the action as a click
  thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);

  if (Object.keys(layerdict.pointerStates).length == 1) {
    // This is a simple drag
    layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
    layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
  } else if (Object.keys(layerdict.pointerStates).length == 2) {
    var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];

    var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
    var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));

    var scaleFactor = newDist / oldDist;

    if (scaleFactor != NaN) {
      layerdict.transform.zoom *= scaleFactor;

      var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
      layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
      layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
    }
  }

  thisPtr.lastX = e.offsetX;
  thisPtr.lastY = e.offsetY;

  if (settings.redrawOnDrag) {
    redrawCanvas(layerdict);
  }
}

function handleMouseWheel(e, layerdict) {
  e.preventDefault();
  e.stopPropagation();
  var t = layerdict.transform;
  var wheeldelta = e.deltaY;
  if (e.deltaMode == 1) {
    // FF only, scroll by lines
    wheeldelta *= 30;
  } else if (e.deltaMode == 2) {
    wheeldelta *= 300;
  }
  var m = Math.pow(1.1, -wheeldelta / 40);
  // Limit amount of zoom per tick.
  if (m > 2) {
    m = 2;
  } else if (m < 0.5) {
    m = 0.5;
  }
  t.zoom *= m;
  var zoomd = (1 - m) / t.zoom;
  t.panx += devicePixelRatio * e.offsetX * zoomd;
  t.pany += devicePixelRatio * e.offsetY * zoomd;
  redrawCanvas(layerdict);
}

function addMouseHandlers(div, layerdict) {
  div.addEventListener("pointerdown", function(e) {
    handlePointerDown(e, layerdict);
  });
  div.addEventListener("pointermove", function(e) {
    handlePointerMove(e, layerdict);
  });
  div.addEventListener("pointerup", function(e) {
    handlePointerUp(e, layerdict);
  });
  var pointerleave = function(e) {
    handlePointerLeave(e, layerdict);
  }
  div.addEventListener("pointercancel", pointerleave);
  div.addEventListener("pointerleave", pointerleave);
  div.addEventListener("pointerout", pointerleave);

  div.onwheel = function(e) {
    handleMouseWheel(e, layerdict);
  }
  for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
    element.addEventListener("contextmenu", function(e) {
      e.preventDefault();
    }, false);
  }
}

function setRedrawOnDrag(value) {
  settings.redrawOnDrag = value;
  writeStorage("redrawOnDrag", value);
}

function setBoardRotation(value) {
  settings.boardRotation = value * 5;
  writeStorage("boardRotation", settings.boardRotation);
  document.getElementById("rotationDegree").textContent = settings.boardRotation;
  resizeAll();
}

function initRender() {
  allcanvas = {
    front: {
      transform: {
        x: 0,
        y: 0,
        s: 1,
        panx: 0,
        pany: 0,
        zoom: 1,
      },
      pointerStates: {},
      anotherPointerTapped: false,
      bg: document.getElementById("F_bg"),
      fab: document.getElementById("F_fab"),
      silk: document.getElementById("F_slk"),
      highlight: document.getElementById("F_hl"),
      layer: "F",
    },
    back: {
      transform: {
        x: 0,
        y: 0,
        s: 1,
        panx: 0,
        pany: 0,
        zoom: 1,
      },
      pointerStates: {},
      anotherPointerTapped: false,
      bg: document.getElementById("B_bg"),
      fab: document.getElementById("B_fab"),
      silk: document.getElementById("B_slk"),
      highlight: document.getElementById("B_hl"),
      layer: "B",
    }
  };
  addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
  addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
}

///////////////////////////////////////////////

///////////////////////////////////////////////
/*
 * Table reordering via Drag'n'Drop
 * Inspired by: https://htmldom.dev/drag-and-drop-table-column
 */

function setBomHandlers() {

  const bom = document.getElementById('bomtable');

  let dragName;
  let placeHolderElements;
  let draggingElement;
  let forcePopulation;
  let xOffset;
  let yOffset;
  let wasDragged;

  const mouseUpHandler = function(e) {
    // Delete dragging element
    draggingElement.remove();

    // Make BOM selectable again
    bom.style.removeProperty("userSelect");

    // Remove listeners
    document.removeEventListener('mousemove', mouseMoveHandler);
    document.removeEventListener('mouseup', mouseUpHandler);

    if (wasDragged) {
      // Redraw whole BOM
      populateBomTable();
    }
  }

  const mouseMoveHandler = function(e) {
    // Notice the dragging
    wasDragged = true;

    // Make the dragged element visible
    draggingElement.style.removeProperty("display");

    // Set elements position to mouse position
    draggingElement.style.left = `${e.screenX - xOffset}px`;
    draggingElement.style.top = `${e.screenY - yOffset}px`;

    // Forced redrawing of BOM table
    if (forcePopulation) {
      forcePopulation = false;
      // Copy array
      phe = Array.from(placeHolderElements);
      // populate BOM table again
      populateBomHeader(dragName, phe);
      populateBomBody(dragName, phe);
    }

    // Set up array of hidden columns
    var hiddenColumns = Array.from(settings.hiddenColumns);
    // In the ungrouped mode, quantity don't exist
    if (settings.bommode === "ungrouped")
      hiddenColumns.push("Quantity");
    // If no checkbox fields can be found, we consider them hidden
    if (settings.checkboxes.length == 0)
      hiddenColumns.push("checkboxes");

    // Get table headers and group them into checkboxes, extrafields and normal headers
    const bh = document.getElementById("bomhead");
    headers = Array.from(bh.querySelectorAll("th"))
    headers.shift() // numCol is not part of the columnOrder
    headerGroups = []
    lastCompoundClass = null;
    for (i = 0; i < settings.columnOrder.length; i++) {
      cElem = settings.columnOrder[i];
      if (hiddenColumns.includes(cElem)) {
        // Hidden columns appear as a dummy element
        headerGroups.push([]);
        continue;
      }
      elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
      if (elem.classList.contains("bom-checkbox")) {
        if (lastCompoundClass === "bom-checkbox") {
          cbGroup = headerGroups.pop();
          cbGroup.push(elem);
          headerGroups.push(cbGroup);
        } else {
          lastCompoundClass = "bom-checkbox";
          headerGroups.push([elem])
        }
      } else {
        headerGroups.push([elem])
      }
    }

    // Copy settings.columnOrder
    var columns = Array.from(settings.columnOrder)

    // Set up array with indices of hidden columns
    var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
    var dragIndex = columns.indexOf(dragName);
    var swapIndex = dragIndex;
    var swapDone = false;

    // Check if the current dragged element is swapable with the left or right element
    if (dragIndex > 0) {
      // Get left headers boundingbox
      swapIndex = dragIndex - 1;
      while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
        swapIndex--;
      if (!hiddenIndices.includes(swapIndex)) {
        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
        if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
          swapElement = columns[dragIndex];
          columns.splice(dragIndex, 1);
          columns.splice(swapIndex, 0, swapElement);
          forcePopulation = true;
          swapDone = true;
        }
      }
    }
    if ((!swapDone) && dragIndex < headerGroups.length - 1) {
      // Get right headers boundingbox
      swapIndex = dragIndex + 1;
      while (hiddenIndices.includes(swapIndex))
        swapIndex++;
      if (swapIndex < headerGroups.length) {
        box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
        if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
          swapElement = columns[dragIndex];
          columns.splice(dragIndex, 1);
          columns.splice(swapIndex, 0, swapElement);
          forcePopulation = true;
          swapDone = true;
        }
      }
    }

    // Write back change to storage
    if (swapDone) {
      settings.columnOrder = columns
      writeStorage("columnOrder", JSON.stringify(columns));
    }

  }

  const mouseDownHandler = function(e) {
    var target = e.target;
    if (target.tagName.toLowerCase() != "td")
      target = target.parentElement;

    // Used to check if a dragging has ever happened
    wasDragged = false;

    // Create new element which will be displayed as the dragged column
    draggingElement = document.createElement("div")
    draggingElement.classList.add("dragging");
    draggingElement.style.display = "none";
    draggingElement.style.position = "absolute";
    draggingElement.style.overflow = "hidden";

    // Get bomhead and bombody elements
    const bh = document.getElementById("bomhead");
    const bb = document.getElementById("bombody");

    // Get all compound headers for the current column
    var compoundHeaders;
    if (target.classList.contains("bom-checkbox")) {
      compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
    } else {
      compoundHeaders = [target];
    }

    // Create new table which will display the column
    var newTable = document.createElement("table");
    newTable.classList.add("bom");
    newTable.style.background = "white";
    draggingElement.append(newTable);

    // Create new header element
    var newHeader = document.createElement("thead");
    newTable.append(newHeader);

    // Set up array for storing all placeholder elements
    placeHolderElements = [];

    // Add all compound headers to the new thead element and placeholders
    compoundHeaders.forEach(function(h) {
      clone = cloneElementWithDimensions(h);
      newHeader.append(clone);
      placeHolderElements.push(clone);
    });

    // Create new body element
    var newBody = document.createElement("tbody");
    newTable.append(newBody);

    // Get indices for compound headers
    var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));

    // For each row in the BOM body...
    var rows = bb.querySelectorAll("tr");
    rows.forEach(function(row) {
      // ..get the cells for the compound column
      const tds = row.querySelectorAll("td");
      var copytds = idxs.map(i => tds[i]);
      // Add them to the new element and the placeholders
      var newRow = document.createElement("tr");
      copytds.forEach(function(td) {
        clone = cloneElementWithDimensions(td);
        newRow.append(clone);
        placeHolderElements.push(clone);
      });
      newBody.append(newRow);
    });

    // Compute width for compound header
    var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
    draggingElement.style.width = `${width}px`;

    // Insert the new dragging element and disable selection on BOM
    bom.insertBefore(draggingElement, null);
    bom.style.userSelect = "none";

    // Determine the mouse position offset
    xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
    yOffset = e.screenY - compoundHeaders[0].offsetTop;

    // Get name for the column in settings.columnOrder
    dragName = getColumnOrderName(target);

    // Change text and class for placeholder elements
    placeHolderElements = placeHolderElements.map(function(e) {
      newElem = cloneElementWithDimensions(e);
      newElem.textContent = "";
      newElem.classList.add("placeholder");
      return newElem;
    });

    // On next mouse move, the whole BOM needs to be redrawn to show the placeholders
    forcePopulation = true;

    // Add listeners for move and up on mouse
    document.addEventListener('mousemove', mouseMoveHandler);
    document.addEventListener('mouseup', mouseUpHandler);
  }

  // In netlist mode, there is nothing to reorder
  if (settings.bommode === "netlist")
    return;

  // Add mouseDownHandler to every column except the numCol
  bom.querySelectorAll("th")
    .forEach(function(head) {
      if (!head.classList.contains("numCol")) {
        head.onmousedown = mouseDownHandler;
      }
    });

}

function getBoundingClientRectFromMultiple(elements) {
  var elems = Array.from(elements);

  if (elems.length == 0)
    return null;

  var box = elems.shift()
    .getBoundingClientRect();

  elems.forEach(function(elem) {
    var elembox = elem.getBoundingClientRect();
    box.left = Math.min(elembox.left, box.left);
    box.top = Math.min(elembox.top, box.top);
    box.width += elembox.width;
    box.height = Math.max(elembox.height, box.height);
  });

  return box;
}

function cloneElementWithDimensions(elem) {
  var newElem = elem.cloneNode(true);
  newElem.style.height = window.getComputedStyle(elem).height;
  newElem.style.width = window.getComputedStyle(elem).width;
  return newElem;
}

function getBomTableHeaderIndex(elem) {
  const bh = document.getElementById('bomhead');
  const ths = Array.from(bh.querySelectorAll("th"));
  return ths.indexOf(elem);
}

function getColumnOrderName(elem) {
  var cname = elem.getAttribute("col_name");
  if (cname === "bom-checkbox")
    return "checkboxes";
  else
    return cname;
}

function resizableGrid(tablehead) {
  var cols = tablehead.firstElementChild.children;
  var rowWidth = tablehead.offsetWidth;

  for (var i = 1; i < cols.length; i++) {
    if (cols[i].classList.contains("bom-checkbox"))
      continue;
    cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
  }

  for (var i = 1; i < cols.length - 1; i++) {
    var div = document.createElement('div');
    div.className = "column-width-handle";
    cols[i].appendChild(div);
    setListeners(div);
  }

  function setListeners(div) {
    var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;

    div.addEventListener('mousedown', function(e) {
      e.preventDefault();
      e.stopPropagation();

      curCol = e.target.parentElement;
      nxtCol = curCol.nextElementSibling;
      startX = e.pageX;

      var padding = paddingDiff(curCol);

      rowWidth = curCol.parentElement.offsetWidth;
      curColWidth = curCol.clientWidth - padding;
      nxtColWidth = nxtCol.clientWidth - padding;
    });

    document.addEventListener('mousemove', function(e) {
      if (startX) {
        var diffX = e.pageX - startX;
        diffX = -Math.min(-diffX, curColWidth - 20);
        diffX = Math.min(diffX, nxtColWidth - 20);

        curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
        nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
        console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
      }
    });

    document.addEventListener('mouseup', function(e) {
      curCol = undefined;
      nxtCol = undefined;
      startX = undefined;
      nxtColWidth = undefined;
      curColWidth = undefined
    });
  }

  function paddingDiff(col) {

    if (getStyleVal(col, 'box-sizing') == 'border-box') {
      return 0;
    }

    var padLeft = getStyleVal(col, 'padding-left');
    var padRight = getStyleVal(col, 'padding-right');
    return (parseInt(padLeft) + parseInt(padRight));

  }

  function getStyleVal(elm, css) {
    return (window.getComputedStyle(elm, null).getPropertyValue(css))
  }
}

///////////////////////////////////////////////

///////////////////////////////////////////////
/* DOM manipulation and misc code */

var bomsplit;
var canvassplit;
var initDone = false;
var bomSortFunction = null;
var currentSortColumn = null;
var currentSortOrder = null;
var currentHighlightedRowId;
var highlightHandlers = [];
var footprintIndexToHandler = {};
var netsToHandler = {};
var markedFootprints = new Set();
var highlightedFootprints = [];
var highlightedNet = null;
var lastClicked;

function dbg(html) {
  dbgdiv.innerHTML = html;
}

function redrawIfInitDone() {
  if (initDone) {
    redrawCanvas(allcanvas.front);
    redrawCanvas(allcanvas.back);
  }
}

function padsVisible(value) {
  writeStorage("padsVisible", value);
  settings.renderPads = value;
  redrawIfInitDone();
}

function referencesVisible(value) {
  writeStorage("referencesVisible", value);
  settings.renderReferences = value;
  redrawIfInitDone();
}

function valuesVisible(value) {
  writeStorage("valuesVisible", value);
  settings.renderValues = value;
  redrawIfInitDone();
}

function tracksVisible(value) {
  writeStorage("tracksVisible", value);
  settings.renderTracks = value;
  redrawIfInitDone();
}

function zonesVisible(value) {
  writeStorage("zonesVisible", value);
  settings.renderZones = value;
  redrawIfInitDone();
}

function dnpOutline(value) {
  writeStorage("dnpOutline", value);
  settings.renderDnpOutline = value;
  redrawIfInitDone();
}

function setDarkMode(value) {
  if (value) {
    topmostdiv.classList.add("dark");
  } else {
    topmostdiv.classList.remove("dark");
  }
  writeStorage("darkmode", value);
  settings.darkMode = value;
  redrawIfInitDone();
}

function setShowBOMColumn(field, value) {
  if (field === "references") {
    var rl = document.getElementById("reflookup");
    rl.disabled = !value;
    if (!value) {
      rl.value = "";
      updateRefLookup("");
    }
  }

  var n = settings.hiddenColumns.indexOf(field);
  if (value) {
    if (n != -1) {
      settings.hiddenColumns.splice(n, 1);
    }
  } else {
    if (n == -1) {
      settings.hiddenColumns.push(field);
    }
  }

  writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));

  if (initDone) {
    populateBomTable();
  }

  redrawIfInitDone();
}


function setFullscreen(value) {
  if (value) {
    document.documentElement.requestFullscreen();
  } else {
    document.exitFullscreen();
  }
}

function fabricationVisible(value) {
  writeStorage("fabricationVisible", value);
  settings.renderFabrication = value;
  redrawIfInitDone();
}

function silkscreenVisible(value) {
  writeStorage("silkscreenVisible", value);
  settings.renderSilkscreen = value;
  redrawIfInitDone();
}

function setHighlightPin1(value) {
  writeStorage("highlightpin1", value);
  settings.highlightpin1 = value;
  redrawIfInitDone();
}

function getStoredCheckboxRefs(checkbox) {
  function convert(ref) {
    var intref = parseInt(ref);
    if (isNaN(intref)) {
      for (var i = 0; i < pcbdata.footprints.length; i++) {
        if (pcbdata.footprints[i].ref == ref) {
          return i;
        }
      }
      return -1;
    } else {
      return intref;
    }
  }
  if (!(checkbox in settings.checkboxStoredRefs)) {
    var val = readStorage("checkbox_" + checkbox);
    settings.checkboxStoredRefs[checkbox] = val ? val : "";
  }
  if (!settings.checkboxStoredRefs[checkbox]) {
    return new Set();
  } else {
    return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
  }
}

function getCheckboxState(checkbox, references) {
  var storedRefsSet = getStoredCheckboxRefs(checkbox);
  var currentRefsSet = new Set(references.map(r => r[1]));
  // Get difference of current - stored
  var difference = new Set(currentRefsSet);
  for (ref of storedRefsSet) {
    difference.delete(ref);
  }
  if (difference.size == 0) {
    // All the current refs are stored
    return "checked";
  } else if (difference.size == currentRefsSet.size) {
    // None of the current refs are stored
    return "unchecked";
  } else {
    // Some of the refs are stored
    return "indeterminate";
  }
}

function setBomCheckboxState(checkbox, element, references) {
  var state = getCheckboxState(checkbox, references);
  element.checked = (state == "checked");
  element.indeterminate = (state == "indeterminate");
}

function createCheckboxChangeHandler(checkbox, references, row) {
  return function () {
    refsSet = getStoredCheckboxRefs(checkbox);
    var markWhenChecked = settings.markWhenChecked == checkbox;
    eventArgs = {
      checkbox: checkbox,
      refs: references,
    }
    if (this.checked) {
      // checkbox ticked
      for (var ref of references) {
        refsSet.add(ref[1]);
      }
      if (markWhenChecked) {
        row.classList.add("checked");
        for (var ref of references) {
          markedFootprints.add(ref[1]);
        }
        drawHighlights();
      }
      eventArgs.state = 'checked';
    } else {
      // checkbox unticked
      for (var ref of references) {
        refsSet.delete(ref[1]);
      }
      if (markWhenChecked) {
        row.classList.remove("checked");
        for (var ref of references) {
          markedFootprints.delete(ref[1]);
        }
        drawHighlights();
      }
      eventArgs.state = 'unchecked';
    }
    settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
    writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
    updateCheckboxStats(checkbox);
    EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
  }
}

function clearHighlightedFootprints() {
  if (currentHighlightedRowId) {
    document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
    currentHighlightedRowId = null;
    highlightedFootprints = [];
    highlightedNet = null;
  }
}

function createRowHighlightHandler(rowid, refs, net) {
  return function () {
    if (currentHighlightedRowId) {
      if (currentHighlightedRowId == rowid) {
        return;
      }
      document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
    }
    document.getElementById(rowid).classList.add("highlighted");
    currentHighlightedRowId = rowid;
    highlightedFootprints = refs ? refs.map(r => r[1]) : [];
    highlightedNet = net;
    drawHighlights();
    EventHandler.emitEvent(
      IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
      rowid: rowid,
      refs: refs,
      net: net
    });
  }
}

function entryMatches(entry) {
  if (settings.bommode == "netlist") {
    // entry is just a net name
    return entry.toLowerCase().indexOf(filter) >= 0;
  }
  // check refs
  if (!settings.hiddenColumns.includes("references")) {
    for (var ref of entry) {
      if (ref[0].toLowerCase().indexOf(filter) >= 0) {
        return true;
      }
    }
  }
  // check fields
  for (var i in config.fields) {
    var f = config.fields[i];
    if (!settings.hiddenColumns.includes(f)) {
      for (var ref of entry) {
        if (pcbdata.bom.fields[ref[1]][i].toLowerCase().indexOf(filter) >= 0) {
          return true;
        }
      }
    }
  }
  return false;
}

function findRefInEntry(entry) {
  return entry.filter(r => r[0].toLowerCase() == reflookup);
}

function highlightFilter(s) {
  if (!filter) {
    return s;
  }
  var parts = s.toLowerCase().split(filter);
  if (parts.length == 1) {
    return s;
  }
  var r = "";
  var pos = 0;
  for (var i in parts) {
    if (i > 0) {
      r += '<mark class="highlight">' +
        s.substring(pos, pos + filter.length) +
        '</mark>';
      pos += filter.length;
    }
    r += s.substring(pos, pos + parts[i].length);
    pos += parts[i].length;
  }
  return r;
}

function checkboxSetUnsetAllHandler(checkboxname) {
  return function () {
    var checkboxnum = 0;
    while (checkboxnum < settings.checkboxes.length &&
      settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
      checkboxnum++;
    }
    if (checkboxnum >= settings.checkboxes.length) {
      return;
    }
    var allset = true;
    var checkbox;
    var row;
    for (row of bombody.childNodes) {
      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
      if (!checkbox.checked || checkbox.indeterminate) {
        allset = false;
        break;
      }
    }
    for (row of bombody.childNodes) {
      checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
      checkbox.checked = !allset;
      checkbox.indeterminate = false;
      checkbox.onchange();
    }
  }
}

function createColumnHeader(name, cls, comparator, is_checkbox = false) {
  var th = document.createElement("TH");
  th.innerHTML = name;
  th.classList.add(cls);
  if (is_checkbox)
    th.setAttribute("col_name", "bom-checkbox");
  else
    th.setAttribute("col_name", name);
  var span = document.createElement("SPAN");
  span.classList.add("sortmark");
  span.classList.add("none");
  th.appendChild(span);
  var spacer = document.createElement("div");
  spacer.className = "column-spacer";
  th.appendChild(spacer);
  spacer.onclick = function () {
    if (currentSortColumn && th !== currentSortColumn) {
      // Currently sorted by another column
      currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
      currentSortColumn.childNodes[1].classList.add("none");
      currentSortColumn = null;
      currentSortOrder = null;
    }
    if (currentSortColumn && th === currentSortColumn) {
      // Already sorted by this column
      if (currentSortOrder == "asc") {
        // Sort by this column, descending order
        bomSortFunction = function (a, b) {
          return -comparator(a, b);
        }
        currentSortColumn.childNodes[1].classList.remove("asc");
        currentSortColumn.childNodes[1].classList.add("desc");
        currentSortOrder = "desc";
      } else {
        // Unsort
        bomSortFunction = null;
        currentSortColumn.childNodes[1].classList.remove("desc");
        currentSortColumn.childNodes[1].classList.add("none");
        currentSortColumn = null;
        currentSortOrder = null;
      }
    } else {
      // Sort by this column, ascending order
      bomSortFunction = comparator;
      currentSortColumn = th;
      currentSortColumn.childNodes[1].classList.remove("none");
      currentSortColumn.childNodes[1].classList.add("asc");
      currentSortOrder = "asc";
    }
    populateBomBody();
  }
  if (is_checkbox) {
    spacer.onclick = fancyDblClickHandler(
      spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
  }
  return th;
}

function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
  while (bomhead.firstChild) {
    bomhead.removeChild(bomhead.firstChild);
  }
  var tr = document.createElement("TR");
  var th = document.createElement("TH");
  th.classList.add("numCol");

  var vismenu = document.createElement("div");
  vismenu.id = "vismenu";
  vismenu.classList.add("menu");

  var visbutton = document.createElement("div");
  visbutton.classList.add("visbtn");
  visbutton.classList.add("hideonprint");

  var viscontent = document.createElement("div");
  viscontent.classList.add("menu-content");
  viscontent.id = "vismenu-content";

  settings.columnOrder.forEach(column => {
    if (typeof column !== "string")
      return;

    // Skip empty columns
    if (column === "checkboxes" && settings.checkboxes.length == 0)
      return;
    else if (column === "Quantity" && settings.bommode == "ungrouped")
      return;

    var label = document.createElement("label");
    label.classList.add("menu-label");

    var input = document.createElement("input");
    input.classList.add("visibility_checkbox");
    input.type = "checkbox";
    input.onchange = function (e) {
      setShowBOMColumn(column, e.target.checked)
    };
    input.checked = !(settings.hiddenColumns.includes(column));

    label.appendChild(input);
    if (column.length > 0)
      label.append(column[0].toUpperCase() + column.slice(1));

    viscontent.appendChild(label);
  });

  viscontent.childNodes[0].classList.add("menu-label-top");

  vismenu.appendChild(visbutton);
  if (settings.bommode != "netlist") {
    vismenu.appendChild(viscontent);
    th.appendChild(vismenu);
  }
  tr.appendChild(th);

  var checkboxCompareClosure = function (checkbox) {
    return (a, b) => {
      var stateA = getCheckboxState(checkbox, a);
      var stateB = getCheckboxState(checkbox, b);
      if (stateA > stateB) return -1;
      if (stateA < stateB) return 1;
      return 0;
    }
  }
  var stringFieldCompareClosure = function (fieldIndex) {
    return (a, b) => {
      var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
      var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
      if (fa != fb) return fa > fb ? 1 : -1;
      else return 0;
    }
  }
  var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
  var compareRefs = (a, b) => {
    var ra = referenceRegex.exec(a);
    var rb = referenceRegex.exec(b);
    if (ra === null || rb === null) {
      if (a != b) return a > b ? 1 : -1;
      return 0;
    } else {
      if (ra.groups.prefix != rb.groups.prefix) {
        return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
      }
      if (ra.groups.number != rb.groups.number) {
        return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
      }
      return 0;
    }
  }
  if (settings.bommode == "netlist") {
    th = createColumnHeader("Net name", "bom-netname", (a, b) => {
      if (a > b) return -1;
      if (a < b) return 1;
      return 0;
    });
    tr.appendChild(th);
  } else {
    // Filter hidden columns
    var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
    var valueIndex = config.fields.indexOf("Value");
    var footprintIndex = config.fields.indexOf("Footprint");
    columns.forEach((column) => {
      if (column === placeHolderColumn) {
        var n = 1;
        if (column === "checkboxes")
          n = settings.checkboxes.length;
        for (i = 0; i < n; i++) {
          td = placeHolderElements.shift();
          tr.appendChild(td);
        }
        return;
      } else if (column === "checkboxes") {
        for (var checkbox of settings.checkboxes) {
          th = createColumnHeader(
            checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
          tr.appendChild(th);
        }
      } else if (column === "References") {
        tr.appendChild(createColumnHeader("References", "references", (a, b) => {
          var i = 0;
          while (i < a.length && i < b.length) {
            if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
            i++;
          }
          return a.length - b.length;
        }));
      } else if (column === "Value") {
        tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
          var ra = a[0][1], rb = b[0][1];
          return valueCompare(
            pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
            pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
        }));
        return;
      } else if (column === "Footprint") {
        tr.appendChild(createColumnHeader(
          "Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
      } else if (column === "Quantity" && settings.bommode == "grouped") {
        tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
          return a.length - b.length;
        }));
      } else {
        // Other fields
        var i = config.fields.indexOf(column);
        if (i < 0)
          return;
        tr.appendChild(createColumnHeader(
          column, `field${i + 1}`, stringFieldCompareClosure(i)));
      }
    });
  }
  bomhead.appendChild(tr);
}

function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
  while (bom.firstChild) {
    bom.removeChild(bom.firstChild);
  }
  highlightHandlers = [];
  footprintIndexToHandler = {};
  netsToHandler = {};
  currentHighlightedRowId = null;
  var first = true;
  if (settings.bommode == "netlist") {
    bomtable = pcbdata.nets.slice();
  } else {
    switch (settings.canvaslayout) {
      case 'F':
        bomtable = pcbdata.bom.F.slice();
        break;
      case 'FB':
        bomtable = pcbdata.bom.both.slice();
        break;
      case 'B':
        bomtable = pcbdata.bom.B.slice();
        break;
    }
    if (settings.bommode == "ungrouped") {
      // expand bom table
      expandedTable = []
      for (var bomentry of bomtable) {
        for (var ref of bomentry) {
          expandedTable.push([ref]);
        }
      }
      bomtable = expandedTable;
    }
  }
  if (bomSortFunction) {
    bomtable = bomtable.sort(bomSortFunction);
  }
  for (var i in bomtable) {
    var bomentry = bomtable[i];
    if (filter && !entryMatches(bomentry)) {
      continue;
    }
    var references = null;
    var netname = null;
    var tr = document.createElement("TR");
    var td = document.createElement("TD");
    var rownum = +i + 1;
    tr.id = "bomrow" + rownum;
    td.textContent = rownum;
    tr.appendChild(td);
    if (settings.bommode == "netlist") {
      netname = bomentry;
      td = document.createElement("TD");
      td.innerHTML = highlightFilter(netname ? netname : "&lt;no net&gt;");
      tr.appendChild(td);
    } else {
      if (reflookup) {
        references = findRefInEntry(bomentry);
        if (references.length == 0) {
          continue;
        }
      } else {
        references = bomentry;
      }
      // Filter hidden columns
      var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
      columns.forEach((column) => {
        if (column === placeholderColumn) {
          var n = 1;
          if (column === "checkboxes")
            n = settings.checkboxes.length;
          for (i = 0; i < n; i++) {
            td = placeHolderElements.shift();
            tr.appendChild(td);
          }
          return;
        } else if (column === "checkboxes") {
          for (var checkbox of settings.checkboxes) {
            if (checkbox) {
              td = document.createElement("TD");
              var input = document.createElement("input");
              input.type = "checkbox";
              input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
              setBomCheckboxState(checkbox, input, references);
              if (input.checked && settings.markWhenChecked == checkbox) {
                tr.classList.add("checked");
              }
              td.appendChild(input);
              tr.appendChild(td);
            }
          }
        } else if (column === "References") {
          td = document.createElement("TD");
          td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
          tr.appendChild(td);
        } else if (column === "Quantity" && settings.bommode == "grouped") {
          // Quantity
          td = document.createElement("TD");
          td.textContent = references.length;
          tr.appendChild(td);
        } else {
          // All the other fields
          var field_index = config.fields.indexOf(column)
          if (field_index < 0)
            return;
          var valueSet = new Set();
          references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
          td = document.createElement("TD");
          td.innerHTML = highlightFilter(Array.from(valueSet).join(", "));
          tr.appendChild(td);
        }
      });
    }
    bom.appendChild(tr);
    var handler = createRowHighlightHandler(tr.id, references, netname);
    tr.onmousemove = handler;
    highlightHandlers.push({
      id: tr.id,
      handler: handler,
    });
    if (references !== null) {
      for (var refIndex of references.map(r => r[1])) {
        footprintIndexToHandler[refIndex] = handler;
      }
    }
    if (netname !== null) {
      netsToHandler[netname] = handler;
    }
    if ((filter || reflookup) && first) {
      handler();
      first = false;
    }
  }
  EventHandler.emitEvent(
    IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
    filter: filter,
    reflookup: reflookup,
    checkboxes: settings.checkboxes,
    bommode: settings.bommode,
  });
}

function highlightPreviousRow() {
  if (!currentHighlightedRowId) {
    highlightHandlers[highlightHandlers.length - 1].handler();
  } else {
    if (highlightHandlers.length > 1 &&
      highlightHandlers[0].id == currentHighlightedRowId) {
      highlightHandlers[highlightHandlers.length - 1].handler();
    } else {
      for (var i = 0; i < highlightHandlers.length - 1; i++) {
        if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
          highlightHandlers[i].handler();
          break;
        }
      }
    }
  }
  smoothScrollToRow(currentHighlightedRowId);
}

function highlightNextRow() {
  if (!currentHighlightedRowId) {
    highlightHandlers[0].handler();
  } else {
    if (highlightHandlers.length > 1 &&
      highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
      highlightHandlers[0].handler();
    } else {
      for (var i = 1; i < highlightHandlers.length; i++) {
        if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
          highlightHandlers[i].handler();
          break;
        }
      }
    }
  }
  smoothScrollToRow(currentHighlightedRowId);
}

function populateBomTable() {
  populateBomHeader();
  populateBomBody();
  setBomHandlers();
  resizableGrid(bomhead);
}

function footprintsClicked(footprintIndexes) {
  var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
  for (var i = 1; i <= footprintIndexes.length; i++) {
    var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
    if (refIndex in footprintIndexToHandler) {
      lastClicked = refIndex;
      footprintIndexToHandler[refIndex]();
      smoothScrollToRow(currentHighlightedRowId);
      break;
    }
  }
}

function netClicked(net) {
  if (net in netsToHandler) {
    netsToHandler[net]();
    smoothScrollToRow(currentHighlightedRowId);
  } else {
    clearHighlightedFootprints();
    highlightedNet = net;
    drawHighlights();
  }
}

function updateFilter(input) {
  filter = input.toLowerCase();
  populateBomTable();
}

function updateRefLookup(input) {
  reflookup = input.toLowerCase();
  populateBomTable();
}

function changeCanvasLayout(layout) {
  document.getElementById("fl-btn").classList.remove("depressed");
  document.getElementById("fb-btn").classList.remove("depressed");
  document.getElementById("bl-btn").classList.remove("depressed");
  switch (layout) {
    case 'F':
      document.getElementById("fl-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.collapse(1);
      }
      break;
    case 'B':
      document.getElementById("bl-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.collapse(0);
      }
      break;
    default:
      document.getElementById("fb-btn").classList.add("depressed");
      if (settings.bomlayout != "bom-only") {
        canvassplit.setSizes([50, 50]);
      }
  }
  settings.canvaslayout = layout;
  writeStorage("canvaslayout", layout);
  resizeAll();
  changeBomMode(settings.bommode);
}

function populateMetadata() {
  document.getElementById("title").innerHTML = pcbdata.metadata.title;
  document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
  document.getElementById("company").innerHTML = pcbdata.metadata.company;
  document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
  if (pcbdata.metadata.title != "") {
    document.title = pcbdata.metadata.title + " BOM";
  }
  // Calculate board stats
  var fp_f = 0,
    fp_b = 0,
    pads_f = 0,
    pads_b = 0,
    pads_th = 0;
  for (var i = 0; i < pcbdata.footprints.length; i++) {
    if (pcbdata.bom.skipped.includes(i)) continue;
    var mod = pcbdata.footprints[i];
    if (mod.layer == "F") {
      fp_f++;
    } else {
      fp_b++;
    }
    for (var pad of mod.pads) {
      if (pad.type == "th") {
        pads_th++;
      } else {
        if (pad.layers.includes("F")) {
          pads_f++;
        }
        if (pad.layers.includes("B")) {
          pads_b++;
        }
      }
    }
  }
  document.getElementById("stats-components-front").innerHTML = fp_f;
  document.getElementById("stats-components-back").innerHTML = fp_b;
  document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
  document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
  document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
  document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
  document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
  document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
  document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
  document.getElementById("stats-th-pads").innerHTML = pads_th;
  // Update version string
  document.getElementById("github-link").innerHTML = "InteractiveHtmlBom&nbsp;" +
    /^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
}

function changeBomLayout(layout) {
  document.getElementById("bom-btn").classList.remove("depressed");
  document.getElementById("lr-btn").classList.remove("depressed");
  document.getElementById("tb-btn").classList.remove("depressed");
  switch (layout) {
    case 'bom-only':
      document.getElementById("bom-btn").classList.add("depressed");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      document.getElementById("frontcanvas").style.display = "none";
      document.getElementById("backcanvas").style.display = "none";
      document.getElementById("bot").style.height = "";
      break;
    case 'top-bottom':
      document.getElementById("tb-btn").classList.add("depressed");
      document.getElementById("frontcanvas").style.display = "";
      document.getElementById("backcanvas").style.display = "";
      document.getElementById("bot").style.height = "calc(100% - 80px)";
      document.getElementById("bomdiv").classList.remove("split-horizontal");
      document.getElementById("canvasdiv").classList.remove("split-horizontal");
      document.getElementById("frontcanvas").classList.add("split-horizontal");
      document.getElementById("backcanvas").classList.add("split-horizontal");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
        sizes: [50, 50],
        onDragEnd: resizeAll,
        direction: "vertical",
        gutterSize: 5
      });
      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
        sizes: [50, 50],
        gutterSize: 5,
        onDragEnd: resizeAll
      });
      break;
    case 'left-right':
      document.getElementById("lr-btn").classList.add("depressed");
      document.getElementById("frontcanvas").style.display = "";
      document.getElementById("backcanvas").style.display = "";
      document.getElementById("bot").style.height = "calc(100% - 80px)";
      document.getElementById("bomdiv").classList.add("split-horizontal");
      document.getElementById("canvasdiv").classList.add("split-horizontal");
      document.getElementById("frontcanvas").classList.remove("split-horizontal");
      document.getElementById("backcanvas").classList.remove("split-horizontal");
      if (bomsplit) {
        bomsplit.destroy();
        bomsplit = null;
        canvassplit.destroy();
        canvassplit = null;
      }
      bomsplit = Split(['#bomdiv', '#canvasdiv'], {
        sizes: [50, 50],
        onDragEnd: resizeAll,
        gutterSize: 5
      });
      canvassplit = Split(['#frontcanvas', '#backcanvas'], {
        sizes: [50, 50],
        gutterSize: 5,
        direction: "vertical",
        onDragEnd: resizeAll
      });
  }
  settings.bomlayout = layout;
  writeStorage("bomlayout", layout);
  changeCanvasLayout(settings.canvaslayout);
}

function changeBomMode(mode) {
  document.getElementById("bom-grouped-btn").classList.remove("depressed");
  document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
  document.getElementById("bom-netlist-btn").classList.remove("depressed");
  var chkbxs = document.getElementsByClassName("visibility_checkbox");

  switch (mode) {
    case 'grouped':
      document.getElementById("bom-grouped-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = false;
      }
      break;
    case 'ungrouped':
      document.getElementById("bom-ungrouped-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = false;
      }
      break;
    case 'netlist':
      document.getElementById("bom-netlist-btn").classList.add("depressed");
      for (var i = 0; i < chkbxs.length; i++) {
        chkbxs[i].disabled = true;
      }
  }

  writeStorage("bommode", mode);
  if (mode != settings.bommode) {
    settings.bommode = mode;
    bomSortFunction = null;
    currentSortColumn = null;
    currentSortOrder = null;
    clearHighlightedFootprints();
  }
  populateBomTable();
}

function focusFilterField() {
  focusInputField(document.getElementById("filter"));
}

function focusRefLookupField() {
  focusInputField(document.getElementById("reflookup"));
}

function toggleBomCheckbox(bomrowid, checkboxnum) {
  if (!bomrowid || checkboxnum > settings.checkboxes.length) {
    return;
  }
  var bomrow = document.getElementById(bomrowid);
  var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
  checkbox.checked = !checkbox.checked;
  checkbox.indeterminate = false;
  checkbox.onchange();
}

function checkBomCheckbox(bomrowid, checkboxname) {
  var checkboxnum = 0;
  while (checkboxnum < settings.checkboxes.length &&
    settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
    checkboxnum++;
  }
  if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
    return;
  }
  var bomrow = document.getElementById(bomrowid);
  var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
  checkbox.checked = true;
  checkbox.indeterminate = false;
  checkbox.onchange();
}

function setBomCheckboxes(value) {
  writeStorage("bomCheckboxes", value);
  settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
  prepCheckboxes();
  populateMarkWhenCheckedOptions();
  setMarkWhenChecked(settings.markWhenChecked);
}

function setMarkWhenChecked(value) {
  writeStorage("markWhenChecked", value);
  settings.markWhenChecked = value;
  markedFootprints.clear();
  for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
    markedFootprints.add(ref);
  }
  populateBomTable();
  drawHighlights();
}

function prepCheckboxes() {
  var table = document.getElementById("checkbox-stats");
  while (table.childElementCount > 1) {
    table.removeChild(table.lastChild);
  }
  if (settings.checkboxes.length) {
    table.style.display = "";
  } else {
    table.style.display = "none";
  }
  for (var checkbox of settings.checkboxes) {
    var tr = document.createElement("TR");
    var td = document.createElement("TD");
    td.innerHTML = checkbox;
    tr.appendChild(td);
    td = document.createElement("TD");
    td.id = "checkbox-stats-" + checkbox;
    var progressbar = document.createElement("div");
    progressbar.classList.add("bar");
    td.appendChild(progressbar);
    var text = document.createElement("div");
    text.classList.add("text");
    td.appendChild(text);
    tr.appendChild(td);
    table.appendChild(tr);
    updateCheckboxStats(checkbox);
  }
}

function populateMarkWhenCheckedOptions() {
  var container = document.getElementById("markWhenCheckedContainer");

  if (settings.checkboxes.length == 0) {
    container.parentElement.style.display = "none";
    return;
  }

  container.innerHTML = '';
  container.parentElement.style.display = "inline-block";

  function createOption(name, displayName) {
    var id = "markWhenChecked-" + name;

    var div = document.createElement("div");
    div.classList.add("radio-container");

    var input = document.createElement("input");
    input.type = "radio";
    input.name = "markWhenChecked";
    input.value = name;
    input.id = id;
    input.onchange = () => setMarkWhenChecked(name);
    div.appendChild(input);

    // Preserve the selected element when the checkboxes change
    if (name == settings.markWhenChecked) {
      input.checked = true;
    }

    var label = document.createElement("label");
    label.innerHTML = displayName;
    label.htmlFor = id;
    div.appendChild(label);

    container.appendChild(div);
  }
  createOption("", "None");
  for (var checkbox of settings.checkboxes) {
    createOption(checkbox, checkbox);
  }
}

function updateCheckboxStats(checkbox) {
  var checked = getStoredCheckboxRefs(checkbox).size;
  var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
  var percent = checked * 100.0 / total;
  var td = document.getElementById("checkbox-stats-" + checkbox);
  td.firstChild.style.width = percent + "%";
  td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
}

document.onkeydown = function (e) {
  switch (e.key) {
    case "n":
      if (document.activeElement.type == "text") {
        return;
      }
      if (currentHighlightedRowId !== null) {
        checkBomCheckbox(currentHighlightedRowId, "placed");
        highlightNextRow();
        e.preventDefault();
      }
      break;
    case "ArrowUp":
      highlightPreviousRow();
      e.preventDefault();
      break;
    case "ArrowDown":
      highlightNextRow();
      e.preventDefault();
      break;
    default:
      break;
  }
  if (e.altKey) {
    switch (e.key) {
      case "f":
        focusFilterField();
        e.preventDefault();
        break;
      case "r":
        focusRefLookupField();
        e.preventDefault();
        break;
      case "z":
        changeBomLayout("bom-only");
        e.preventDefault();
        break;
      case "x":
        changeBomLayout("left-right");
        e.preventDefault();
        break;
      case "c":
        changeBomLayout("top-bottom");
        e.preventDefault();
        break;
      case "v":
        changeCanvasLayout("F");
        e.preventDefault();
        break;
      case "b":
        changeCanvasLayout("FB");
        e.preventDefault();
        break;
      case "n":
        changeCanvasLayout("B");
        e.preventDefault();
        break;
      default:
        break;
    }
    if (e.key >= '1' && e.key <= '9') {
      toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
      e.preventDefault();
    }
  }
}

function hideNetlistButton() {
  document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
  document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
  document.getElementById("bom-netlist-btn").style.display = "none";
}

window.onload = function (e) {
  initUtils();
  initRender();
  initStorage();
  initDefaults();
  cleanGutters();
  populateMetadata();
  dbgdiv = document.getElementById("dbg");
  bom = document.getElementById("bombody");
  bomhead = document.getElementById("bomhead");
  filter = "";
  reflookup = "";
  if (!("nets" in pcbdata)) {
    hideNetlistButton();
  }
  initDone = true;
  setBomCheckboxes(document.getElementById("bomCheckboxes").value);
  // Triggers render
  changeBomLayout(settings.bomlayout);

  // Users may leave fullscreen without touching the checkbox. Uncheck.
  document.addEventListener('fullscreenchange', () => {
    if (!document.fullscreenElement)
      document.getElementById('fullscreenCheckbox').checked = false;
  });
}

window.onresize = resizeAll;
window.matchMedia("print").addListener(resizeAll);

///////////////////////////////////////////////

///////////////////////////////////////////////

///////////////////////////////////////////////
  </script>
</head>

<body>

<div id="topmostdiv" class="topmostdiv">
  <div id="top">
    <div style="float: right; height: 100%;">
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="menubtn"></button>
        <div class="menu-content">
          <label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
            <input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
            Dark mode
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
            <input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
            Full Screen
          </label>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
            Fab layer
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
            Silkscreen
          </label>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
            References
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
            Values
          </label>
          <div id="tracksAndZonesCheckboxes">
            <label class="menu-label" style="width: calc(50% - 18px)">
              <input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
              Tracks
            </label><!-- This comment eats space! All of it!
            --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
              <input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
              Zones
            </label>
          </div>
          <label class="menu-label" style="width: calc(50% - 18px)">
            <input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
            Pads
          </label><!-- This comment eats space! All of it!
          --><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
            <input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
            DNP outlined
          </label>
          <label class="menu-label">
            <input id="highlightpin1Checkbox" type="checkbox" onchange="setHighlightPin1(this.checked)">
            Highlight first pin
          </label>
          <label class="menu-label">
            <input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
            Continuous redraw on drag
          </label>
          <label class="menu-label">
            <span>Board rotation</span>
            <span style="float: right"><span id="rotationDegree">0</span>&#176;</span>
            <input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
          </label>
          <label class="menu-label">
            <div style="margin-left: 5px">Bom checkboxes</div>
            <input id="bomCheckboxes" class="menu-textbox" type=text
                   oninput="setBomCheckboxes(this.value)">
          </label>
          <label class="menu-label">
            <div style="margin-left: 5px">Mark when checked</div>
            <div id="markWhenCheckedContainer"></div>
          </label>
          <label class="menu-label">
            <span class="shameless-plug">
              <span>Created using</span>
              <a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
            </span>
          </label>
        </div>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
                title="Front only">F
        </button>
        <button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
                title="Front and Back">FB
        </button>
        <button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
                title="Back only">B
        </button>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
                title="BOM only"></button>
        <button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
                title="BOM left, drawings right"></button>
        <button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
                title="BOM top, drawings bot"></button>
      </div>
      <div class="button-container hideonprint"
           style="float: right; position: relative; top: 8px">
        <button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
                title="Grouped BOM"></button>
        <button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
                title="Ungrouped BOM"></button>
        <button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
                title="Netlist"></button>
      </div>
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="statsbtn"></button>
        <div class="menu-content">
          <table class="stats">
            <tbody>
              <tr>
                <td width="40%">Board stats</td>
                <td>Front</td>
                <td>Back</td>
                <td>Total</td>
              </tr>
              <tr>
                <td>Components</td>
                <td id="stats-components-front">~</td>
                <td id="stats-components-back">~</td>
                <td id="stats-components-total">~</td>
              </tr>
              <tr>
                <td>Groups</td>
                <td id="stats-groups-front">~</td>
                <td id="stats-groups-back">~</td>
                <td id="stats-groups-total">~</td>
              </tr>
              <tr>
                <td>SMD pads</td>
                <td id="stats-smd-pads-front">~</td>
                <td id="stats-smd-pads-back">~</td>
                <td id="stats-smd-pads-total">~</td>
              </tr>
              <tr>
                <td>TH pads</td>
                <td colspan=3 id="stats-th-pads">~</td>
              </tr>
            </tbody>
          </table>
          <table class="stats">
            <col width="40%"/><col />
            <tbody id="checkbox-stats">
              <tr>
                <td colspan=2 style="border-top: 0">Checkboxes</td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="hideonprint menu" style="float: right; top: 8px;">
        <button class="iobtn"></button>
        <div class="menu-content">
          <div class="menu-label menu-label-top">
            <div style="margin-left: 5px;">Save board image</div>
            <div class="flexbox">
              <input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
              <span>X</span>
              <input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
                  style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
            </div>
            <label>
              <input id="render-save-transparent" type="checkbox">
              Transparent background
            </label>
            <div class="flexbox">
              <button class="savebtn" onclick="saveImage('F')">Front</button>
              <button class="savebtn" onclick="saveImage('B')">Back</button>
            </div>
          </div>
          <div class="menu-label">
            <span style="margin-left: 5px;">Config and checkbox state</span>
            <div class="flexbox">
              <button class="savebtn" onclick="saveSettings()">Export</button>
              <button class="savebtn" onclick="loadSettings()">Import</button>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div id="fileinfodiv" style="overflow: auto;">
      <table class="fileinfo">
        <tbody>
          <tr>
            <td id="title" class="title" style="width: 70%">
              Title
            </td>
            <td id="revision" class="title" style="width: 30%">
              Revision
            </td>
          </tr>
          <tr>
            <td id="company">
              Company
            </td>
            <td id="filedate">
              Date
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
  <div id="bot" class="split" style="height: calc(100% - 80px)">
    <div id="bomdiv" class="split split-horizontal">
      <div style="width: 100%">
        <input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
               oninput="updateRefLookup(this.value)">
        <input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
               oninput="updateFilter(this.value)">
        <div class="button-container hideonprint" style="float: left; margin: 0;">
          <button id="copy" title="Copy bom table to clipboard"
               onclick="copyToClipboard()"></button>
        </div>
      </div>
      <div id="dbg"></div>
      <table class="bom" id="bomtable">
        <thead id="bomhead">
        </thead>
        <tbody id="bombody">
        </tbody>
      </table>
    </div>
    <div id="canvasdiv" class="split split-horizontal">
      <div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
        <div style="position: relative; width: 100%; height: 100%;">
          <canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
          <canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
          <canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
          <canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
        </div>
      </div>
      <div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
        <div style="position: relative; width: 100%; height: 100%;">
          <canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
          <canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
          <canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
          <canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
        </div>
      </div>
    </div>
  </div>
</div>

</body>

</html>
